【问题标题】:assertion failed: conflicting directory structures detected. Suspicious paths断言失败:检测到冲突的目录结构。可疑路径
【发布时间】:2019-12-11 08:07:21
【问题描述】:

我正在尝试从出现错误的 aws s3 读取数据。

s3 存储桶和路径示例如下:

s3://USA/Texas/Austin/valid
s3://USA/Texas/Austin/invalid 
s3://USA/Texas/Houston/valid
s3://USA/Texas/Houston/invalid 
s3://USA/Texas/Dallas/valid
s3://USA/Texas/Dallas/invalid 
s3://USA/Texas/San_Antonio/valid 
s3://USA/Texas/San_Antonio/invalid 

当我尝试阅读时

spark.read.parquet("s3://USA/Texas/Austin/valid")

spark.read.parquet("s3://USA/Texas/Austin/invalid")

spark.read.parquet("s3://USA/Texas/Austin")

效果很好。

但是当我尝试阅读为

spark.read.parquet("s3://USA/Texas/*")

spark.read.parquet("s3://USA/Texas")

它抛出一个异常。

java.lang.AssertionError:断言失败:检测到冲突的目录结构。可疑路径:

如果提供的路径是分区目录,请在数据源的选项中设置“basePath”来指定表的根目录。如果有多个根目录,请分别加载,然后合并。

根据建议,我可以单独阅读它们,但我有超过 500 个文件,单独阅读它们并将它们联合起来会很忙。

还有其他方法可以实现吗?

【问题讨论】:

    标签: apache-spark amazon-s3 pyspark databricks


    【解决方案1】:

    如果可以使用Hive,那么设置两个配置

    hive.input.dir.recursive=true
    hive.mapred.supports.subdirectories=true
    

    create external table 在根路径上。然后,表应该读取表中的所有子目录数据,但架构应该相同,否则会出错。

    【讨论】:

      猜你喜欢
      • 2013-03-14
      • 2018-01-29
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多