gpt4 book ai didi

docker - 在 docker 容器超时时从 s3 复制到 Redshift

转载 作者:行者123 更新时间:2023-12-01 04:59:22 27 4
gpt4 key购买 nike

我正在尝试将大量数据从 s3 复制到 Redshift。它通过 psql 在我的 mac 上正常工作,但是当我尝试从本地运行的 docker 容器(使用 docker-airflow)运行它时,我总是会收到此错误:

SSL SYSCALL error: EOF detected The connection to the server was lost. Attempting reset: Succeeded.

这是我如何在本地运行它的示例:

# First, I connect using psql
psql -h <connection_string> -u meh -d database -p 5439
# Then I issue this command.
COPY test.test from 's3://data/manifest_uuid' with credentials ''
FORMAT AS JSON 'auto' TRUNCATECOLUMNS COMPUPDATE ACCEPTINVCHARS manifest MAXERROR 100;

在气流容器中,使用 psycopg2 执行相同的查询:

conn = psycopg2.connect(dbname=database, host=endpoint, port=port, user=user, password=password, sslmode='require')
with conn.cursor() as cur:
cur.execute(q, args)
if fetch_one:
result = cur.fetchone()
if result is None:
return None
return result
elif fetch_all:
return cur.fetchall()
else:
conn.commit()

以下是我尝试从容器运行它的方法:

# I try to connect to the container
docker exec -it `docker ps|grep worker|awk 'END {print $1}'` /bin/bash

然后我像在本地一样运行。

我可以连接到容器,从那里运行 psql 并进行各种查询,如果文件足够小,甚至可以使用 COPY 命令。我尝试关注 https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-firewall-guidance.html#change-tcpip-settings ,并且我验证了建议的选项已设置为建议的值,但我仍然遇到此问题。

更新:这是一个带有 dockerfile 的要点。要重现,您还需要一个 redshift 集群和一些 1-2gb 的 json 文件,可以使用 COPY 命令将其移动到 Redshift。如果您从该镜像创建一个容器,连接到它并尝试运行复制命令,您很可能会遇到同样的问题。

https://gist.github.com/drapadubok/da04548dace5d4ff4198631841322402

最佳答案

这是由 recent regression bug 引起的在 Docker for Mac 中,这会使 TCP 连接超时。

将 Docker 更新到 v17.12.0-ce-mac49 可以解决问题,OP 已确认这一点。

关于docker - 在 docker 容器超时时从 s3 复制到 Redshift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48496689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com