1 python postgresql amazon-web-services amazon-redshift parquet
我现在尝试将所有表从 AWS RDS (PostgreSQL) 加载到 Amazon Redshift。
不过,这里并不那么重要,我使用 Apache Airflow 为我完成所有操作。职位详情如下:
许多周以来,使用 Redshift COPY 命令都可以正常工作,如下所示:
TRUNCATE {table};\n\
COPY {table}\n\
FROM '{s3_key}'\n\
IAM_ROLE '{os.getenv('REDSHIFT_IAM_ROLE')}'\n\
FORMAT AS PARQUET\n\
FILLRECORD\n\
;
Run Code Online (Sandbox Code Playgroud)
然而今天早上发现DAG运行错误,日志是这样的:
Running statement:
TRUNCATE users;
COPY users
FROM '<s3-bucket-name>'
IAM_ROLE '<iam-role>'
PARQUET
FILLRECORD
;
, parameters: None
psycopg2.errors.InternalError_: Assert
DETAIL:
-----------------------------------------------
error: Assert
code: 1000
context: Unreachable - Invalid type: 4000
query: 3514431
location: dory_util.cpp:528
process: padbmaster [pid=4694]
-----------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我尝试通过运行以下命令在 Redshift 中的上述错误消息中通过查询 id 查找日志:
SELECT * FROM SVL_S3LOG WHERE query = '3514431';
Run Code Online (Sandbox Code Playgroud)
但甚至无法在任何地方找到错误的细节。
已四处搜索并询问 ChatGPT,但我没有找到任何类似的问题或方向,甚至无法找到有关错误日志的更多信息。只发现一些问题说这可能有点 Redshift 内部错误。
但对于 parquet 格式和数据类型来说,转换完全没问题。有人可以指出或给我一些建议来解决我的数据管道问题吗?
小智 7
我和你遇到了同样的问题,我通过以下方式解决了它:
因此,您的复制查询应如下所示:
COPY users ("col1", "col2", ..., "coln")
FROM '<s3-bucket-name>'
IAM_ROLE '<iam-role>'
FORMAT AS PARQUET SERIALIZETOJSON;
Run Code Online (Sandbox Code Playgroud)
使用这个查询我设法加载数据。
归档时间: |
|
查看次数: |
995 次 |
最近记录: |