【问题标题】:Apache Spark Parquet: Cannot build an empty groupApache Spark Parquet:无法构建空组
【发布时间】:2017-10-01 17:12:14
【问题描述】:

我使用的是 Apache Spark 2.1.1(使用的是 2.1.0,它是一样的,今天换了)。 我有一个数据集:

root
|-- muons: array (nullable = true)
|    |-- element: struct (containsNull = true)
|    |    |-- reco::Candidate: struct (nullable = true)
|    |    |-- qx3_: integer (nullable = true)
|    |    |-- pt_: float (nullable = true)
|    |    |-- eta_: float (nullable = true)
|    |    |-- phi_: float (nullable = true)
|    |    |-- mass_: float (nullable = true)
|    |    |-- vertex_: struct (nullable = true)
|    |    |    |-- fCoordinates: struct (nullable = true)
|    |    |    |    |-- fX: float (nullable = true)
|    |    |    |    |-- fY: float (nullable = true)
|    |    |    |    |-- fZ: float (nullable = true)
|    |    |-- pdgId_: integer (nullable = true)
|    |    |-- status_: integer (nullable = true)
|    |    |-- cachePolarFixed_: struct (nullable = true)
|    |    |-- cacheCartesianFixed_: struct (nullable = true)

如您所见,此架构中有 3 个空结构。我知道 100% 我可以阅读/操作/做任何事情。但是,当我尝试在 parquet 中写入磁盘时,出现以下异常:

dsReduced.write.format("parquet").save(outputPathName):

java.lang.IllegalStateException: Cannot build an empty group
at org.apache.parquet.Preconditions.checkState(Preconditions.java:91)
at org.apache.parquet.schema.Types$BaseGroupBuilder.build(Types.java:622)
at org.apache.parquet.schema.Types$BaseGroupBuilder.build(Types.java:497)
at org.apache.parquet.schema.Types$Builder.named(Types.java:286)
at org.apache.spark.sql.execution.datasources.parquet.ParquetSchemaConverter.convertField(ParquetSchemaConverter.scala:535)
at org.apache.spark.sql.execution.datasources.parquet.ParquetSchemaConverter.convertField(ParquetSchemaConverter.scala:321)
at org.apache.spark.sql.execution.datasources.parquet.ParquetSchemaConverter$$anonfun$convertField$1.apply(ParquetSchemaConverter.scala:534)
at org.apache.spark.sql.execution.datasources.parquet.ParquetSchemaConverter$$anonfun$convertField$1.apply(ParquetSchemaConverter.scala:533)

所以,基本上我想了解这是错误还是预期行为???我还假设它与空结构有关。任何帮助将不胜感激!

更新:我已经快速创建了剥离版本,并且该版本可以正常工作!任何见解都会非常有帮助!

VK

【问题讨论】:

    标签: apache-spark parquet


    【解决方案1】:

    Parquet 不会写空结构

    更多信息 - 见这里https://issues.apache.org/jira/browse/SPARK-20593

    VK

    【讨论】:

    • 如果您控制数据源,就像我的情况一样,我删除了所有空行(也包括嵌套行),然后再将一行交给 spark。
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2017-01-16
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多