【问题标题】:COPY from s3 to Redshift in docker container timeout在 docker 容器超时中从 s3 复制到 Redshift
【发布时间】:2018-01-29 07:54:23
【问题描述】:

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

SSL SYSCALL 错误:检测到 EOF 与服务器的连接丢失。 尝试重置:成功。

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

# 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 集群和一些带有 json 的 1-2gb 文件,可以使用 COPY 命令将其移动到 Redshift。如果您从该映像创建容器,连接到它并尝试运行复制命令,您很可能会看到相同的问题。

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

【问题讨论】:

  • 你是如何通过 psql 发出 COPY 命令的?
  • 分享有关复制命令外观和执行方式的更多详细信息可能会很有用。
  • 谢谢!添加了详细信息,请告知是否可以添加更多说明
  • 您在使用 Docker for Mac 吗?可能与这个问题有关:github.com/docker/for-mac/issues/2442 您可以尝试那里的 cmets 中链接的实验性修补构建。
  • @AlessandroCosentino 这有帮助!我按照 github 问题 (17.12.0-ce-mac49) 中的建议将 docker 更新到了最新版本,并且成功了!谢谢!您可以将此作为答案提交,以便我接受吗?

标签: docker amazon-redshift


【解决方案1】:

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

更新 Docker 到 v17.12.0-ce-mac49 解决了这个问题,正如 OP 所确认的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多