spark“basePath”选项设置

Posted

技术标签:

【中文标题】spark“basePath”选项设置【英文标题】:spark "basePath" option setting 【发布时间】:2017-03-29 06:11:41 【问题描述】:

当我这样做时:

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】:

Parquet partition discovery 上的每个 Spark 文档,我相信将您的负载语句从

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

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

应该发现并加载所有 parquet 分区。这是假设数据是以“文件夹”作为其基本目录写入的。

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

【讨论】:

我希望有一种方法可以从通配符加载所有数据集。似乎没有这样的事情。谢谢。

以上是关于spark“basePath”选项设置的主要内容,如果未能解决你的问题,请参考以下文章

读取镶木地板文件时,有没有办法在 basePath 中使用通配符?

如何为静态导出的 NextJS 应用程序设置 basePath

运行 EMR Spark 脚本,Spark UI SQL 选项卡消失

在数据块中加载增量表特定分区的最佳实践是啥?

Spark学习笔记6:Spark调优与调试

Spark教程——Oozie编排Spark任务