如何在mapreduce作业中输出数据以供sqoop导出?

c86crjj0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(514)

我读过很多关于使用sqoop从sql导入的文章,但是关于导出只有一些小道消息,而且示例总是假设您出于某种原因导出导入的/预格式化的数据,或者使用hive。
在mapreduce作业中,如何将数据写入到sqoop可以读取和导出的hdfs中?
这个sqoop文档向我展示了支持的文件格式。我想我可以使用text/csv,但是如何在mapreduce中实现呢?
我找到了这个答案,就是修改 TextOutputFormat ,但只写入键/值。我的“值”是多个字段/列!

aiqt4smr

aiqt4smr1#

尝试使用其他存储,如avro或parquet(更多的buggy),这样您就有了一个模式。然后您可以“查询”这些文件并将它们的数据导出到rdbms中。
但是,这种支持似乎有点缺陷/中断,只有使用kite或sqoop(内部使用kite)创建文件时才能正常工作。
http://grokbase.com/t/sqoop/user/1532zggqb7/how-does-sqoop-export-detect-avro-schema

omvjsjqw

omvjsjqw2#

我用了 codegen 用于生成可写入SequenceFile的类的工具:

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

然后我就可以用sqoop读取这些内容了,用bulk设置导出。但表演糟透了。最后,我只编写了简单的csv格式的文本文件,可以用bcp工具导入,而sqoop只花了几个小时就可以在几分钟内完成。

相关问题