使用 parquet 格式附加 Apache Spark 中列的描述

Posted

技术标签:

【中文标题】使用 parquet 格式附加 Apache Spark 中列的描述【英文标题】:Attach description of columns in Apache Spark using parquet format 【发布时间】:2019-05-29 19:22:27 【问题描述】:

我读了一个镶木地板:

df = spark.read.parquet(file_name)

并获取具有以下内容的列:

df.columns

并返回一个列列表 ['col1', 'col2', 'col3']

我读到 parquet 格式能够在文件中存储一些元数据。

有没有办法存储和读取额外的元数据,例如,附上每列的人工描述?

谢谢。

【问题讨论】:

看起来这就是 parquet 文件的持久化方式(没有标题或 'col1 等)。我先检查一下。默认情况下,它存储列名和类型。 github.com/awesome-spark/spark-gotchas/blob/master/… 【参考方案1】:

无法在 Parquet 文件中读取或存储任意附加元数据。

当提到 Parquet 文件中的元数据时,它指的是与字段相关的技术元数据,包括嵌套字段的数量、类型信息、长度信息等。如果您查看 Parquet 文档中的 SchemaElement 类( https://static.javadoc.io/org.apache.parquet/parquet-format/2.6.0/org/apache/parquet/format/SchemaElement.html) 您将找到架构中每个字段的所有可用元数据。这不包括字段名称之外的任何人类可读的描述。

可以在此处的“文件格式”部分找到 Parquet 元数据的一个很好的概述 - https://parquet.apache.org/documentation/latest/

【讨论】:

以上是关于使用 parquet 格式附加 Apache Spark 中列的描述的主要内容,如果未能解决你的问题,请参考以下文章

使用经 EMRFS S3 优化的提交器提高 Apache Spark 写入 Apache Parquet 格式文件的性能

java 读写Parquet格式的数据 Parquet example

Parquet 格式文件

Parquet存储格式 - 论文翻译

使用 Apache Parquet 的第一步输入错误

Parquet学习总结