【问题标题】:How to convert parquet file to Avro file?如何将镶木地板文件转换为 Avro 文件?
【发布时间】:2016-12-23 01:41:01
【问题描述】:

我是 hadoop 和大数据技术的新手。我喜欢将 parquet 文件转换为 avro 文件并读取该数据。我在几个论坛上搜索,它建议使用 AvroParquetReader。

AvroParquetReader<GenericRecord> reader = new AvroParquetReader<GenericRecord>(file);
GenericRecord nextRecord = reader.read();

但我不确定如何包含 AvroParquetReader。我不能够 完全导入它。

我可以使用 spark-shell 读取这个文件,并且可以将它转换为一些 JSON 然后可以将该 JSON 转换为 avro。但我正在寻找一个 更简单的解决方案。

【问题讨论】:

    标签: hadoop apache-spark parquet spark-avro


    【解决方案1】:

    如果您能够使用 Spark DataFrames,您将能够在 Apache Spark 中本地读取 parquet 文件,例如(在 Python 伪代码中):

    df = spark.read.parquet(...) 
    

    要保存文件,您可以使用spark-avro Spark 包。要将 DataFrame 写成 avro,它会是这样的:

    df.write.format("com.databricks.spark.avro").save("...")

    不要忘记,您需要在您的 Spark 集群版本中包含正确版本的 spark-avro Spark 包(例如,3.1.0-s2.11 对应于使用 Scala 2.11 的 spark-avro 包 3.1,其中匹配默认的 Spark 2.0 集群)。有关如何使用该软件包的更多信息,请参阅https://spark-packages.org/package/databricks/spark-avro

    一些方便的参考资料包括:

    1. Spark SQL Programming Guide
    2. spark-avro Spark 包。

    【讨论】:

    • OP 专门要求比 spark (shell) 更简单的解决方案
    • 或者 OP 要求比使用 AvroParquetReader 从 Parquet 到 JSON,然后从 JSON 到 Avro 更简单的解决方案。
    • 我理解你的看法,但如果你提到关于使用 AvroParquetReader 和/或在 Spark-shell 以 JSON 作为中介从 Parquet 转换为 Avro 的上下文中的整个问题 - 然后使用 DataFrames 读取从 Parquet 并保存到 Avro 是一个更简单的解决方案。我可以理解可能问题是如何在不完全使用 Spark 的情况下从 Parquet 转换为 Avro 的上下文。但由于这个问题被标记为 Apache-spark,我认为使用 Spark 提供更简单的解决方案并非不合理。
    • 我已经删除了我的“接受”,因为您的回答是“公平”的解释。但是是的 - 我的兴趣是专门针对独立的 没有 spark。似乎有一个库 - 现在正在尝试。
    • 哦,刚刚注意到您删除了“接受”评论,我想我同时回复了您的原始评论;-)。祝你在没有 Spark 的情况下顺利转换,嗯?!顺便说一句,过去我使用过 parquet-mr 库,但我承认我有一段时间没有使用它了。
    猜你喜欢
    • 2014-11-25
    • 2017-01-18
    • 2020-08-13
    • 2018-11-09
    • 2019-02-03
    • 1970-01-01
    • 2016-04-16
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多