如何在MapReduce作业中输出数据以供Sqoop导出?

时间:2016-01-26 18:49:47

标签: hadoop mapreduce sqoop

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

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

This Sqoop documentation向我展示了支持的文件格式。我想我可以使用text / CSV,但是如何在MapReduce中实现呢?

I've found this answer,它只是修改TextOutputFormat的选项,但只是写入键/值。我的价值观"是多个字段/列!

2 个答案:

答案 0 :(得分:0)

尝试使用其他存储设备,例如avro或者镶木地板(更多错误),因此您有一个架构。然后你可以"查询"这些文件并将其数据导出到RDBMS中。

然而,看起来支持有点错误/破坏,只有在使用Kite或sqoop(内部使用风筝)创建文件时才能正常工作。

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

答案 1 :(得分:0)

我使用codegen工具生成可写入SequenceFiles的类:

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

然后我能够阅读使用Sqoop的那些,使用批量设置导出。但表现糟透了。最后,我只是编写了可以使用BCP工具导入的简单的类似CSV的文本文件,并且在几分钟内完成了几个小时的Sqoop。