Sq oop массовый экспорт на SQL сервер - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь экспортировать 21046329 строк в SQL Сервер, но это очень медленно. Я пытался использовать массовую вставку, но это не работает. Просматривая SQL Server Profiler, я увидел, что он вставляет только 1 строку на один stmt, после этого я взглянул на sq oop mapper и увидел, что он генерирует SQL запросов, подобных этому

'org. apache .sq oop .mapreduce.sqlserver.SqlServerExportBatchOutputFormat: использование запроса INSERT INTO [test3] ([col1], [col2], [col3], [col4], [col5], [col6] , [col7]) VALUES (?,?,?,?,?,?,?) '

Sq oop команда экспорта:

sqoop export
--connect 'jdbc:sqlserver://server:port;database=test2;EnableBulkLoad=true;BulkLoadBatchSize=100024;BulkLoadOptions=0' 
--username test --password pass --table 'test3' 
--export-dir /exportDirFromHDFS --input-lines-terminated-by "n" 
--input-fields-terminated-by ',' 
--batch -m 10

Кто-нибудь знает как решить это?

1 Ответ

0 голосов
/ 11 января 2020

Попробуйте использовать свойство sqoop.export.records.per.statement, чтобы указать количество записей, которые будут использоваться в каждом операторе вставки:

sqoop export \
  -Dsqoop.export.records.per.statement=10 \
  --connect 
  ...

В результате Sq oop создаст следующий запрос:

Вставить в таблицу VALUES (...), (...), (...), ...;

...