spark“basePath”选项设置

时间:2016-11-15 11:19:09

标签: apache-spark pyspark google-cloud-dataproc

当我这样做时:

  

allf = spark.read.parquet(“gs:// bucket / folder / *”)

我明白了:

  

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

...以及路径列表后面的以下消息:

  

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

我是Spark的新手。我相信我的数据源实际上是“文件夹”的集合(类似于base/top_folder/year=x/month=y/*.parquet),我想加载所有文件并对其进行转换。

感谢您的帮助!

  • 更新1:我查看了Dataproc控制台,在创建集群时无法设置“选项”。
  • 更新2:我已经检查了集群的“cluster.properties”文件,但没有这样的选项。可能是我必须添加一个并重置群集吗?

1 个答案:

答案 0 :(得分:3)

关于Parquet partition discovery的Per Saprk文档,我相信从

更改加载语句
allf = spark.read.parquet("gs://bucket/folder/*")

allf = spark.read.parquet("gs://bucket/folder")

应该发现并加载所有镶木地板分区。这假设数据是以“folder”作为基本目录编写的。

如果目录库/文件夹实际上包含多个数据集,您将需要独立加载每个数据集,然后将它们组合在一起。