使用 talend 将 CSV 文件红移

Posted

技术标签:

【中文标题】使用 talend 将 CSV 文件红移【英文标题】:CSV file to redshift using talend 【发布时间】:2014-12-10 13:29:04 【问题描述】:

Windows 8.1 talend 版本:5.6

工作设计:

tFileinputDelimited >> tredshiftoutput

我正在将 1 百万数据从 csv 文件加载到 redshift。加载 5 lakshs 数据后,我收到以下错误:

组件 tRedshiftOutput_1 中的异常 org.postgresql.util.PSQLException:错误:/rds/bin/padb.1.0.867/data/exec/58/0:无法从共享对象映射段:无法分配内存 详情:


错误:/rds/bin/padb.1.0.867/data/exec/58/0:无法从共享对象映射段:无法分配内存 代码:1015 上下文:dlopen(/rds/bin/padb.1.0.867/data/exec/58/0,RTLD_LAZY) 查询:4234372 位置:exec_plan.cpp:2213 进程:padbmaster [pid=15630]


at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2096)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1829)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:510)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:386)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:332)
at project_1.red_mysqltest_0_1.red_mysqltest.tFileInputDelimited_1Process(red_mysqltest.java:1056)
at project_1.red_mysqltest_0_1.red_mysqltest.runJobInTOS(red_mysqltest.java:1802)
at project_1.red_mysqltest_0_1.red_mysqltest.main(red_mysqltest.java:1646)

[统计] 断开连接

如何解决这些错误??

【问题讨论】:

从 csv 进行红移批量加载 - 请使用 COPY tablename FROM 命令。使用 tRedshiftRow 执行命令 不要使用 tredshiftoutput 组件,因为它不适用于批量加载。 你能解释一下怎么做吗? 我建议您可以在互联网上搜索如何将数据从 csv 加载到 redshift 中,这将引导您从命令语法中复制。并且您必须在 talend 的 tRedshiftRow 组件中使用相同的命令。在此之前,您必须将 csv 上传到 aws S3 存储桶 【参考方案1】:

要使用 COPY 命令,您需要复制 S3 中的所有 csv 文件。

要在 S3 中复制文件,您可以通过以下命令使用 tSystem 组件 -

 "aws s3 cp /home/filename.csv  s3://data/"

然后您可以使用 tRedshiftRow 使用 COPY 命令将数据从 S3 复制到表中。如果您不使用 S3,则只需直接传递文件的路径即可。

 "COPY tablename
  FROM 's3://location/filename.csv'
  credentials 
          'aws_access_key_id= enter_access_key;
           aws_secret_access_key=enter_aws_secret_access_ket' 

          CSV DELIMITER ';' IGNOREHEADER 1  BLANKSASNULL EMPTYASNULL MAXERROR 10;"

更多详情请看COPY

【讨论】:

我不知道其他方法,速度也取决于您的互联网带宽

以上是关于使用 talend 将 CSV 文件红移的主要内容,如果未能解决你的问题,请参考以下文章

tMatchGroup 在 Talend Open Studio for Big Data 中的位置

如何加载大量来自S3小CSV文件红移?

Python/SQLAlchemy:如何将巨大的红移表保存到 CSV?

使用 Talend 填充事实表

将 Hive 表迁移到红移

使用 Redshift 的 Ignoreheader CSV 文件