Сбой задания импорта Sqoop при извлечении данных из psql

Я запускаю задание sqoop в облаке Google для импорта данных из базы данных psql после применения соединений к 3 таблицам. Однако задание sqoop завершается с ошибкой, указанной ниже, хотя оно импортирует данные из таблицы в течение 15 минут, но завершается сбоем после работы в течение 2 часов. Я могу легко извлечь другие таблицы.

Размер данных: 13 ГБ

Запрос: gcloud вычисление ssh $INSTANCE_NAME --project=$PROJECT_ID --service-account=$ACCOUNT --command="""$SQOOP_HOME/bin/sqoop-import -D mapreduce.output.basename='$TABLE_EXPORT' -- connect jdbc:$JDBC://$HOST_NAME:$PORT/$DATABASE --username $USERNAME --password '$PASSWORD' --target-dir $BUCKET_STORAGE -m $NUM_WORKERS --split-by $SPLIT_BY --query ' $QUERY \$CONDITIONS ' --map-column-java $MAPPING_COLUMNS --fields-terminated-by '|' --null-string '' """ --zone=$ZONE 2>&1

Ошибка:

20/06/12 22:14:36 ​​ИНФО mapreduce.Job: карта 0% уменьшить 0%

20/06/12 22:14:49 ИНФО mapreduce.Job: карта 50% уменьшение 0%

20/06/12 22:14:50 ИНФО mapreduce.Job: карта 75% редукция 0%

package_write_wait: подключение к порту XX.XX.XXX.XXX XX: сломанный канал

ОШИБКА: (gcloud.compute.ssh) [/usr/bin/ssh] завершился с кодом возврата [255].

Команда завершилась с кодом возврата 1


person Lucky Singh Shekhawat    schedule 16.06.2020    source источник


Ответы (1)


Ошибка packet_write_wait: Connection to XX.XX.XXX.XXX port XX: Broken pipe обычно указывает на то, что соединение было разорвано, потому что какое-то время оно бездействовало, что имеет смысл, учитывая, что ваша команда не работает через 2 часа.

Чтобы исправить это, в другом сообщении стека было рекомендовано поддерживать соединение, настроив ServerAliveInternal и ServerAliveCountMax, и я рекомендую вам прочитать, для чего они используются.

По сути, ServerAliveInternal устанавливает значение времени, при достижении которого ssh отправляет сообщение для запроса сообщения с сервера, а ServerAliveCountMax устанавливает количество сообщений ServerAliveInternal, которые могут быть отправлены без получения ответа от сервера перед разрывом соединения.

Вам нужно будет настроить это в файле ~/.ssh/config вашего клиента, и вы можете проверить это сообщение стека для справки или это тема с такой же проблемой.

person ddworks    schedule 17.06.2020
comment
Но в идеале задание sqoop должно завершиться после извлечения данных, т.е. через 15 минут. - person Lucky Singh Shekhawat; 18.06.2020