我们可以使用 sqoop 将数据从 Hadoop (Hive) 导出到 Amazon Redshift

Posted

技术标签:

【中文标题】我们可以使用 sqoop 将数据从 Hadoop (Hive) 导出到 Amazon Redshift【英文标题】:Can we use sqoop to export data from Hadoop (Hive) to Amazon Redshift 【发布时间】:2016-09-23 03:52:42 【问题描述】:

我有一个本地 Hadoop 集群,想将数据加载到 Amazon Redshift。考虑到成本,Informatica/Talend 不是一个选项,所以我们可以利用 Sqoop 将表从 Hive 直接导出到 Redshift 吗? Sqoop 是否连接到 Redshift?

【问题讨论】:

【参考方案1】:

将数据加载到 Amazon Redshift 的最有效的方法是将数据放入 Amazon S3,然后在 Redshift 中发出 COPY 命令。这会在所有 Redshift 节点上执行并行数据加载。

虽然 Sqoop 可能能够使用传统的INSERT SQL 命令将数据插入 Redshift,但这并不是将数据插入 Redshift 的好方法。

首选方法是:

将数据以 CSV 格式(最好是 .gz 或 .bzip 格式)导出到 Amazon S3 在 Redshift 中触发 COPY 命令

您应该能够通过将数据复制到 CSV 格式的 Hive 外部表来将数据导出到 S3。

另外,Redshift 可以从 HDFS 加载数据。它需要一些额外的设置来授予对 EMR 集群的 Redshift 访问权限。请参阅 Redshift 文档:Loading Data from Amazon EMR

【讨论】:

【参考方案2】:

不支持 upsert 的复制命令只是简单地加载你提到的多次并最终得到重复的数据,所以更好的方法是使用胶水作业并修改它以进行更新,否则插入或使用 lambda 插入到 redshift 中

【讨论】:

以上是关于我们可以使用 sqoop 将数据从 Hadoop (Hive) 导出到 Amazon Redshift的主要内容,如果未能解决你的问题,请参考以下文章

从 SAP HANA 导入数据时出现 sqoop 问题

Sqoop基本原理

sqoop安装及使用

Sqoop从入门到实战

Sqoop从入门到实战

如何将mysql数据导入Hadoop之Sqoop安装