我读过很多关于使用sqoop从sql导入的文章,但是关于导出只有一些小道消息,而且示例总是假设您出于某种原因导出导入的/预格式化的数据,或者使用hive。在mapreduce作业中,如何将数据写入到sqoop可以读取和导出的hdfs中?这个sqoop文档向我展示了支持的文件格式。我想我可以使用text/csv,但是如何在mapreduce中实现呢?我找到了这个答案,就是修改 TextOutputFormat ,但只写入键/值。我的“值”是多个字段/列!
TextOutputFormat
aiqt4smr1#
尝试使用其他存储,如avro或parquet(更多的buggy),这样您就有了一个模式。然后您可以“查询”这些文件并将它们的数据导出到rdbms中。但是,这种支持似乎有点缺陷/中断,只有使用kite或sqoop(内部使用kite)创建文件时才能正常工作。http://grokbase.com/t/sqoop/user/1532zggqb7/how-does-sqoop-export-detect-avro-schema
omvjsjqw2#
我用了 codegen 用于生成可写入SequenceFile的类的工具:
codegen
sqoop/bin/sqoop-codegen --connect jdbc://sqlserver://... --table MyTable --class-name my.package.name.ClassForMyTable --outdir ./out/
然后我就可以用sqoop读取这些内容了,用bulk设置导出。但表演糟透了。最后,我只编写了简单的csv格式的文本文件,可以用bcp工具导入,而sqoop只花了几个小时就可以在几分钟内完成。
2条答案
按热度按时间aiqt4smr1#
尝试使用其他存储,如avro或parquet(更多的buggy),这样您就有了一个模式。然后您可以“查询”这些文件并将它们的数据导出到rdbms中。
但是,这种支持似乎有点缺陷/中断,只有使用kite或sqoop(内部使用kite)创建文件时才能正常工作。
http://grokbase.com/t/sqoop/user/1532zggqb7/how-does-sqoop-export-detect-avro-schema
omvjsjqw2#
我用了
codegen
用于生成可写入SequenceFile的类的工具:然后我就可以用sqoop读取这些内容了,用bulk设置导出。但表演糟透了。最后,我只编写了简单的csv格式的文本文件,可以用bcp工具导入,而sqoop只花了几个小时就可以在几分钟内完成。