Apache Sqoop を使用して、HDInsight 上の Apache Hadoop と Azure SQL Database の間でデータをインポートおよびエクスポートする
Apache Sqoop を使用して、Azure HDInsight 上の Apache Hadoop クラスターと Azure SQL Database または Microsoft SQL Server の間でインポートとエクスポートを行う方法について説明します。 このドキュメントの手順では、Hadoop クラスターのヘッド ノードから sqoop
コマンドを直接使用します。 SSH を使用してヘッド ノードに接続し、このドキュメント内のコマンドを実行します。 この記事は、「HDInsight の Hadoop での Apache Sqoop の使用」の続きです。
前提条件
「HDInsight の Hadoop での Apache Sqoop の使用」の「テスト環境のセットアップ」が完了していること。
SSH クライアント 詳細については、SSH を使用して HDInsight (Apache Hadoop) に接続する方法に関するページを参照してください。
Sqoop に関する知識。 詳細については、「OpenFOAM ユーザーガイド」を参照してください。
設定
ssh コマンドを使用してクラスターに接続します。 次のコマンドを編集して CLUSTERNAME をクラスターの名前に置き換えてから、そのコマンドを入力します。
ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
使いやすくするために、変数を設定します。
PASSWORD
、MYSQLSERVER
、およびMYDATABASE
を関連する値に置き換え、次のコマンドを入力します。export PASSWORD='PASSWORD' export SQL_SERVER="MYSQLSERVER" export DATABASE="MYDATABASE" export SERVER_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD" export SERVER_DB_CONNECT="jdbc:sqlserver://$SQL_SERVER.database.windows.net:1433;user=sqluser;password=$PASSWORD;database=$DABATASE"
Sqoop のエクスポート
Hive から SQL へ。
Sqoop でデータベースを認識できることを確認するには、開いている SSH 接続に次のコマンドを入力します。 このコマンドはデータベースの一覧を返します。
sqoop list-databases --connect $SERVER_CONNECT
次のコマンドを入力して、指定したデータベースのテーブルのリストを表示します。
sqoop list-tables --connect $SERVER_DB_CONNECT
Hive
hivesampletable
テーブルからデータベース内のmobiledata
テーブルにデータをエクスポートするには、開いている SSH 接続に次のコマンドを入力します。sqoop export --connect $SERVER_DB_CONNECT \ -table mobiledata \ --hcatalog-table hivesampletable
データがエクスポートされたことを確認するには、SSH 接続から、次のクエリを使用して、エクスポートされたデータを表示します。
sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT COUNT(*) from dbo.mobiledata WITH (NOLOCK)" sqoop eval --connect $SERVER_DB_CONNECT \ --query "SELECT TOP(10) * from dbo.mobiledata WITH (NOLOCK)"
Sqoop のインポート
SQL から Azure のストレージへ。
開いている SSH 接続に次のコマンドを入力して、SQL 内の
mobiledata
テーブルから HDInsight 上のwasbs:///tutorials/usesqoop/importeddata
ディレクトリにデータをインポートします。 データ内のフィールドはタブ文字で区切られていて、行は改行文字で終わっています。sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' -m 1
または、Hive テーブルを指定することもできます。
sqoop import --connect $SERVER_DB_CONNECT \ --table mobiledata \ --target-dir 'wasb:///tutorials/usesqoop/importeddata2' \ --fields-terminated-by '\t' \ --lines-terminated-by '\n' \ --create-hive-table \ --hive-table mobiledata_imported2 \ --hive-import -m 1
インポートが完了したら、開いた SSH 接続に次のコマンドを入力して、新しいディレクトリ内のデータを列挙します。
hadoop fs -tail /tutorials/usesqoop/importeddata/part-m-00000
beeline を使用して、テーブルがHiveで作成されたことを確認します。
接続する
beeline -u 'jdbc:hive2://headnodehost:10001/;transportMode=http'
次のクエリを一度に1つずつ実行し、出力を確認します。
show tables; describe mobiledata_imported2; SELECT COUNT(*) FROM mobiledata_imported2; SELECT * FROM mobiledata_imported2 LIMIT 10;
Beeline を終了するには、
!exit
を使用します。
制限事項
一括エクスポート - Linux ベースの HDInsight を使用する場合、SQL にデータをエクスポートするために使用する Sqoop コネクタでは、一括挿入はサポートされません。
バッチ処理 - Linux ベースの HDInsight で、挿入処理実行時に
-batch
スイッチを使用すると、Sqoop は挿入操作をバッチ処理するのではなく、複数の挿入を行います。
重要な考慮事項
HDInsight と SQL Server の両方が、同じ Azure Virtual Network に存在する必要があります。
例については、「Connect HDInsight to your on-premises network」(オンプレミス ネットワークへの HDInsight の接続) をご覧ください。
Azure Virtual Network での HDInsight の使用に関する詳細情報については、「Azure Virtual Network を使用した HDInsight 機能の拡張」をご覧ください。 Azure Virtual Network の詳細については、「Virtual Network の概要」を参照してください。
SQL 認証を許可するよう、SQL Server を構成する必要があります。 詳細については、認証モードの選択に関するドキュメントを参照してください。
リモート接続を許可するよう、SQL Server を構成する必要がある場合があります。 詳細については、SQL Server データベース エンジンへの接続に関するトラブルシューティングの方法のドキュメントを参照してください。
次のステップ
ここでは Sqoop の使用方法を学習しました。 詳細については、次を参照してください。
- HDInsight での Apache Oozie の使用:Oozie ワークフローで Sqoop アクションを使用します。
- HDInsight を使用したフライト遅延データの分析:Interactive Query を使用してフライト遅延データを分析してから、Sqoop を使用して Azure のデータベースにデータをエクスポートします。
- HDInsight へのデータのアップロード:HDInsight/Azure Blob Storage にデータをアップロードするその他の方法を説明します。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示