apache-spark - spark "basePath"选项设置

标签 apache-spark pyspark google-cloud-dataproc

当我做:

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 ),我想加载所有文件并对其进行转换。

谢谢你的帮助!
  • 更新 1:我查看了 Dataproc 控制台,在创建集群时无法设置“选项”。
  • 更新 2:我已经检查了集群的“cluster.properties”文件,但没有这样的选项。难道我必须添加一个并重置集群?
  • 最佳答案

    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/

    相关文章:

    scala - UDF 在 Scala 中按键过滤 map

    hadoop - 在pyspark中对hive表执行操作时如何修复大小限制错误

    python - 在列上应用正则表达式来检测 pyspark 数据框中日志的 log4j casee 的最佳实践是什么?

    google-cloud-dataproc - 使用 Spark --jars 选项将 PySpark 作业提交到集群

    apache-spark - Spark HBase/BigTable - 宽/稀疏数据帧持久性

    apache-spark - 在Kubernetes/Mesos中运行YARN集群

    apache-spark - 如何在 Spark 代码中设置 Kryo 的不可修改集合序列化器

    PySpark.RDD.first -> UnpicklingError : NEWOBJ class argument has NULL tp_new

    pyspark - GCP Dataproc Spark 消耗 BigQuery

    sql - Scala Spark Cassandra 在主键匹配上更新或插入行