【问题标题】:How do I output data in a MapReduce job for Sqoop to export?如何在 MapReduce 作业中输出数据以供 Sqoop 导出?
【发布时间】:2016-05-03 11:16:15
【问题描述】:

我已经阅读了很多关于使用 Sqoop 从 SQL 导入的文章,但只有一些关于导出的花絮,并且示例总是假设您出于某种原因正在导出导入/预格式化的数据,或者正在使用 Hive。

如何从 MapReduce 作业将数据写入 Sqoop 可以读取和导出的 HDFS?

This Sqoop documentation 显示支持的文件格式。我想我可以使用 text/CSV,但是如何在 MapReduce 中到达那里?

I've found this answer,表示只修改TextOutputFormat 的选项,但只写入键/值。我的“值”是多个字段/列!

【问题讨论】:

    标签: hadoop mapreduce sqoop


    【解决方案1】:

    尝试使用其他存储,如 avro 或 parquet(更多错误),这样您就有了架构。然后您可以“查询”这些文件并将它们的数据导出到 RDBMS 中。

    但是,该支持似乎有点错误/损坏,只有在您使用 Kite 或 sqoop(内部使用风筝)创建文件时才能正常工作。

    http://grokbase.com/t/sqoop/user/1532zggqb7/how-does-sqoop-export-detect-avro-schema

    【讨论】:

      【解决方案2】:

      我使用codegen 工具生成可以写入序列文件的类:

      sqoop/bin/sqoop-codegen --connect jdbc://sqlserver://... --table MyTable --class-name my.package.name.ClassForMyTable --outdir ./out/
      

      然后我能够阅读使用 Sqoop 的内容,并使用批量设置导出。但表现很糟糕。最后,我只是编写了可使用 BCP 工具导入的简单的类似 CSV 的文本文件,而使用 Sqoop 需要数小时才能在几分钟内完成。

      【讨论】:

        猜你喜欢
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        • 2021-12-18
        • 1970-01-01
        • 2016-03-22
        相关资源
        最近更新 更多