【发布时间】:2015-01-11 14:40:53
【问题描述】:
我们使用的是 Amazon redshift,数据库是 POSTGRESQL。数据位于亚马逊云中。我们需要使用 Pentaho 数据集成软件将 Amazon redshift 中的数据加载到 Mysql 中。您能告诉我们如何通过 Pentaho 连接到 Redshift 吗???
【问题讨论】:
标签: mysql linux pentaho amazon-redshift
我们使用的是 Amazon redshift,数据库是 POSTGRESQL。数据位于亚马逊云中。我们需要使用 Pentaho 数据集成软件将 Amazon redshift 中的数据加载到 Mysql 中。您能告诉我们如何通过 Pentaho 连接到 Redshift 吗???
【问题讨论】:
标签: mysql linux pentaho amazon-redshift
我会尽力帮助你的。
redshift 连接将需要您的 pentaho 数据集成的 lib 文件夹中的 PostgreSql JDBC。但是 Pentaho 自带的红移有一些问题,这可以通过删除现有的并使用 8.4 版本来解决(见this link)
之后,您可以使用表格输入步骤在转换上创建新连接。您的查询应该可以正常运行。
您可以添加一个连接到 mysql 数据库的表输出步骤(您还需要下载 de MySQL JDBC 连接器并将其放置在 lib 文件夹中)。
另一种输出是MySQL Bulk Loader Step,它具有出色的性能。但是对于第一次测试,表格输出步骤应该可以完成工作。
【讨论】:
我们在我当前的项目中解决了完全相同的问题,我们需要从 RedShift 聚合大型数据集,并且需要将聚合数据导入 MySql 以用于仪表板报告。 如果您已经决定使用 Pantaho 工具,那就太好了。它确实是一个不错的工具,但我们采用了替代方法,因为我们拥有大量数据集,而我们使用 Kettle/Spoon 获得的 Spead 无法满足我们的基准和业务需求。
我在这里列出解决方案,以便对其他人有帮助。
触发 psql 选择命令并将结果集重定向到 CSV/TXT 文件。
psql -U $User -d $db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER '|';" > foo_data.csv
使用 MySQlImport 实用程序将数据导入 mysql。
mysqlimport --local --compress -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST $MYSQL_DATABASE --fields-terminated-by='|' --ignore-lines=1 --columns C1|C2|C3|..|C4 TABLE_NAME.CSV
通过上述方法,我们取得了约 100 倍的结果。
使用与 mysql 相同的方法到 RedShift 也是可行的,唯一的变化是,您可能需要将 mysql 导出的 CSV 推送到 S3 或启用 SSH 以在 psql 脚本中使用复制命令。
【讨论】: