【问题标题】:Convert Avro in to Parquet format将 Avro 转换为 Parquet 格式
【发布时间】:2014-06-22 09:31:38
【问题描述】:

我想从数据库中导出数据并转换为 Avro + Parquet 格式。 Sqoop 支持 Avro 导出,但不支持 Parquet。我尝试使用 Apache Pig、Apache Crunch 等将 Avro 对象转换为 Parquet,但没有任何效果。

Apache pig 给我“引起:org.apache.hadoop.mapreduce.lib.input.InvalidInputException:输入路径不存在”。但输入路径存在于该位置。

Apache Crunch 总是抛出 :java.lang.ClassNotFoundException: Class org.apache.crunch.impl.mr.run.CrunchMapper not found" 尽管我已将它添加到 Hadoop 库路径中。

将数据从 DB 导出为 Parquet 格式的最佳且简单的方法是什么?

【问题讨论】:

    标签: apache-pig sqoop avro parquet apache-crunch


    【解决方案1】:

    最新的 sqoop(我认为是 1.4.6)支持导入包含 Parquet 格式数据的文件,还支持导入 Parquet 并创建相关的 Hive 表。

    【讨论】:

      【解决方案2】:

      我能够使用 sqoop1 将 mysql 表转储到 avro 文件中,然后使用 avro2parquet https://github.com/tispratik/avro2parquet 转换工具将 avro 文件转换为 parquet 文件。一旦它在镶木地板上,我可以将它上传到 hdfs 并在它上面创建一个蜂巢表。如果运行 0.13 之前的 hive 版本,则需要在 hive 中使用 parquet 插件。 Hive 在 0.13 中原生支持 parquet。

      【讨论】:

        【解决方案3】:

        我使用 Hive。

        在 Avro 数据上创建一个外部表。 创建一个空 Parquet 表。

        然后 插入覆盖表 PARQUET_TABLE 从 AVRO_TABLE 中选择 *。

        超级简单:)

        【讨论】:

        • 这是否让我们通过 Hive 指定任何镶木地板选项?
        • 实际上,我不确定 - 您要指定哪些 Parquet 选项?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-13
        • 1970-01-01
        相关资源
        最近更新 更多