从psql提取数据时,Sqoop导入作业失败

时间:2020-06-16 07:33:03

标签: import mapreduce gcloud sqoop broken-pipe

在3个表上应用联接后,我正在Google Cloud上运行sqoop作业以从psql数据库导入数据。但是,sqoop作业由于以下错误而失败,尽管它在15分钟内从表中导入了数据,但运行2小时后却失败了。我能够轻松提取其他表格。

数据大小:13GB

查询:gcloud compute 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 --password'$ PASSWORD'--target-dir $ BUCKET_STORAGE -m $ NUM_WORKERS-被$ SPLIT_BY分割--query'$ QUERY \ $ CONDITIONS'--map-column-java $ MAPPING_COLUMNS --fields-terminated-通过“ |” -空字符串''“”“ --zone = $ ZONE 2>&1

错误:

12/06/20 22:14:36 INFO mapreduce.Job:地图0%减少0%

12/06/20 22:14:49信息mapreduce。工作:地图50%减少0%

12/06/20 22:14:50信息mapreduce。工作:地图75%减少0%

packet_write_wait:连接到XX.XX.XXX.XXX端口XX:管道损坏

错误:(gcloud.compute.ssh)[/ usr / bin / ssh]退出并返回了代码 [255]。

以返回码1退出的命令

1 个答案:

答案 0 :(得分:2)

packet_write_wait: Connection to XX.XX.XXX.XXX port XX: Broken pipe错误通常表示连接已终止,因为它已经空闲了一段时间,考虑到您的命令在2小时后失败,这是有道理的。

为此,在another Stack post中建议通过配置ServerAliveInternalServerAliveCountMax来维持连接,我建议您阅读它们的用途。

本质上,ServerAliveInternal设置一个时间值,当达到该时间值时,它将使ssh发送消息以请求来自服务器的消息,而ServerAliveCountMax设置可发送的ServerAliveInternal消息的数量,而无需在终止之前从服务器收到回音连接。

您需要在客户端的〜/ .ssh / config文件中进行配置,然后可以选中this Stack post for reference或此thread with the same issue