Amazon EMR 上的 Sqoop 注意事项 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EMR 上的 Sqoop 注意事项

在 Amazon EMR 上运行 Sqoop 时,请考虑以下项目。

使用 Sqoop 与 HCatalog 集成

Amazon EMR 上的 Sqoop 支持 Sqoop-HCatalog 集成。在使用 Sqoop 将输出写入到 Amazon S3 中 HCatalog 表中时,可以通过设置 mapred.output.direct.NativeS3FileSystem 和将 mapred.output.direct.EmrFileSystem 属性设置为 false 来禁用 Amazon EMR 直接写入。有关更多信息,请参阅使用 HCatalog。您可使用 Hadoop -D mapred.output.direct.NativeS3FileSystem=false-D mapred.output.direct.EmrFileSystem=false 命令。如果您未禁用直接写入,则不会发生错误,但在 Amazon S3 中创建表时不会写入任何数据。

Sqoop JDBC 和数据库支持

默认情况下,Sqoop 已安装 MariaDB 和 PostgreSQL 驱动程序。为 Sqoop 安装的 PostgreSQL 驱动程序仅适用于 PostgreSQL 8.4。要安装 Sqoop 的备用 JDBC 连接器集,请连接到集群的主节点并将这些连接器安装在 /usr/lib/sqoop/lib 中。下面是各个 JDBC 连接器的链接:

Sqoop 支持的数据库列在以下 URL 中:http://sqoop.apache.org/docs/version/SqoopUserGuide.html#_supported_databases,其中的 version 是您正在使用的 Sqoop 的版本,例如 1.4.6。如果 JDBC 连接字符串与此列表中的不匹配,您必须指定驱动程序。

例如,您可使用以下命令导出到 Amazon Redshift 数据库表(适用于 JDBC 4.1):

sqoop export --connect jdbc:redshift://$MYREDSHIFTHOST:5439/mydb --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver com.amazon.redshift.jdbc41.Driver --username master --password Mymasterpass1

您可同时使用 MariaDB 和 MySQL 连接字符串,但如果您指定 MariaDB 连接字符串,则需要指定驱动程序:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1

如果您使用安全套接字层加密来访问您的数据库,则需要使用与以下 Sqoop 导出示例中类似的 JDBC URI:

sqoop export --connect jdbc:mariadb://$HOSTNAME:3306/mydb?verifyServerCertificate=false&useSSL=true&requireSSL=true --table mysqoopexport --export-dir s3://mybucket/myinputfiles/ --driver org.mariadb.jdbc.Driver --username master --password Mymasterpass1

如需详细了解有关在 RDS 中使用 SSL 加密功能,请参阅《Amazon RDS 用户指南》中的使用 SSL 来加密与数据库实例的连接

有关更多信息,请参阅 Apache Sqoop 文档。