我正在googlecloud上运行一个sqoop作业,在对3个表应用连接之后,从psql数据库导入数据。但是,sqoop作业失败,出现以下错误,尽管它在15分钟内从表中导入数据,但在运行2小时后失败。我可以很容易地提取其他表。
数据大小:13gb
query:gcloud compute ssh$instance\u name--project=$project\u id--service account=$account--command=“”$sqoop\u home/bin/sqoop import-d mapreduce.output.basename='$table\u export'--connect jdbc:$jdbc://$host\u name:$port/$database--username$username--password'$password target dir$bucket\u storage-m$num workers--split by$split“$query$conditions”--map column java$mapping|columns--以“|”结尾的字段--空字符串“”--zone=$zone 2>&1
错误:
20/06/12 22:14:36 info mapreduce.job:Map0%减少0%
20/06/12 22:14:49 info mapreduce.job:Map50%减少0%
20/06/12 22:14:50 info mapreduce.job:Map75%减少0%
数据包\u写入\u等待:连接到xx.xx..端口xx:管道断开
错误:(gcloud.compute.ssh)[/usr/bin/ssh]退出,返回代码为[255]。
命令退出,返回代码为1
1条答案
按热度按时间2sbarzqh1#
这个
packet_write_wait: Connection to XX.XX.XXX.XXX port XX: Broken pipe
错误通常表示连接已结束,因为它已空闲一段时间,考虑到您的命令在2小时后失败,这是有意义的。为了解决这个问题,在另一篇文章中建议通过配置serveraliveinternal和serveralivecountmax来维护连接,我建议您阅读它们的用途。
本质上,serveraliveinternal设置一个时间值,当达到该值时,ssh将发送一条消息以请求服务器发送消息,而serveralivecountmax设置在终止连接之前可以发送的serveraliveinternal消息的数量,而无需从服务器接收回复。
您需要在客户端的~/.ssh/config文件中对此进行配置,您可以检查此堆栈文章以供参考,或者检查具有相同问题的此线程。