2016-01-26 4 views
0

Я много читал об импорте из SQL с помощью Sqoop, но есть только лакомые кусочки при экспорте, и в примерах всегда предполагается, что вы экспортируете импортированные/предварительно отформатированные данные по какой-либо причине или используете Hive.Как вывести данные в задание MapReduce для экспорта Sqoop?

Как из задания MapReduce записывать данные в HDFS, которые Sqoop может читать и экспортировать?

This Sqoop documentation показывает поддерживаемые форматы файлов. Думаю, я могу использовать текст/CSV, но как мне попасть в MapReduce?

I've found this answer, в котором говорится только изменить параметры для TextOutputFormat, но просто записывает ключ/значения. Мои «значения» - это несколько полей/столбцов!

ответ

0

Попробуйте использовать другие хранилища, такие как avro или паркет (более багги), поэтому у вас есть схема. Затем вы можете «запросить» эти файлы и экспортировать свои данные в СУБД.

Однако, похоже, что эта поддержка была немного ошибочной/сломанной и работала исправно, только если вы создали файлы с Kite или sqoop (которые внутренне используют кайт).

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

0

Я использовал инструмент codegen для создания классов, которые могли бы написать в SequenceFiles:

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

И тогда я был в состоянии читать тех, кто в использовании Sqoop, экспорт с установкой насыпной. Но спектакль был ужасным. В конце концов, я вместо этого просто написал простые текстовые файлы, похожие на CSV, с помощью инструмента BCP, и что потребовалось несколько часов с Sqoop, выполненным за считанные минуты.

Смежные вопросы