Amazon EMR での Sqoop に関する考慮事項 - Amazon EMR

Amazon EMR での Sqoop に関する考慮事項

Amazon EMR で Sqoop を実行するときは、以下について検討します。

HCatalog の統合での Sqoop の使用

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 でサポートされるデータベースが、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

Secure Socket Layer 暗号化を使用してデータベースに接続している場合、次の 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 を使用した DB インスタンスへの接続の暗号化」を参照してください。

詳細については、Apache Sqoop ドキュメントを参照してください。