当我做:
allf = spark.read.parquet("gs://bucket/folder/*")
我得到:
java.lang.AssertionError: assertion failed: Conflicting directory structures detected. Suspicious paths:
...以及路径列表后的以下消息:
If provided paths are partition directories, please set "basePath" in the options of the data source to specify the root directory of the table. If there are multiple root directories, please load them separately and then union them.
我是 Spark 的新手。我相信我的数据源实际上是一组“文件夹”(类似于
base/top_folder/year=x/month=y/*.parquet
),我想加载所有文件并对其进行转换。谢谢你的帮助!
最佳答案
Parquet 上的 Spark 文档 partition discovery ,我相信改变你的负载声明
allf = spark.read.parquet("gs://bucket/folder/*")
到allf = spark.read.parquet("gs://bucket/folder")
应该发现并加载所有 Parquet 分区。这是假设数据是用“文件夹”作为其基本目录写入的。如果目录库/文件夹实际上包含多个数据集,您将需要独立加载每个数据集,然后将它们合并在一起。
关于apache-spark - spark "basePath"选项设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40608528/