Hive クエリからのインポート

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

この記事では、Machine Learning Studio (クラシック) でデータのインポート モジュールを使用して、Hadoop クラスターと HDInsight 分散ストレージからデータを取得する方法について説明します。

注意

適用対象: Machine Learning Studio (クラシック) のみ

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

Hive からのデータのインポートは、大規模なデータセットを読み込む場合や、機械学習実験にデータを読み込む前に、MapReduce ジョブを使用してデータを事前処理する場合に特に便利です。

重要

2018 年 7 月 31 日の時点で、Microsoft Azure HDInsight バージョン 3.3 は、Windows上の HDInsight の最後のバージョンでした。 Windows 3.3 以前に HDInsight クラスターがある場合は、HDInsight on Linux (HDInsight バージョン 3.5 以降) に移行する必要があります。 廃止 されたバージョンの HDInsight の詳細については、「廃止されたバージョン」セクションを参照してください。 Machine Learning Studio (クラシック) では、特定のシナリオで Linux 上の HDInsight がサポートされます。

Linux での HDInsight のサポート

Machine Learning Studio (クラシック) では、次のシナリオで Linux 上の HDInsight がサポートされています。

  • 既定の Hadoop 2.7.3 (HDI 3.6) BLOB、ADLS セカンダリ
  • Spark 2.1.0 (HDI 3.6) BLOB (既定)、ADLS セカンダリ
  • Spark 2.2.0 (HDI 3.6) BLOB が既定で、ADLS セカンダリ
  • Spark 2.3.0 (HDI 3.6) BLOB (既定)、ADLS セカンダリ

既知の問題

Linux 上の HDInsight で Hive クエリにデータのインポート モジュールを使用する場合、いくつかの既知の問題があります。

Hive クエリからデータをインポートする方法

ウィザードを使用する

このモジュールには、ストレージ オプションの選択、既存のサブスクリプションとアカウントの選択、すべてのオプションの迅速な構成に役立つ新しいウィザードが用意されています。

  1. データのインポート モジュールを実験に追加します。 このモジュールは、Studio (クラシック) の データ入力と出力 カテゴリにあります。

  2. [ データのインポート ウィザードの起動 ] をクリックし、プロンプトに従います。

  3. 構成が完了したら、実際にデータを実験にコピーするには、モジュールを右クリックし、[ 選択した実行] を選択します。

既存のデータ接続を編集する必要がある場合、ウィザードは以前のすべての構成の詳細を読み込み、最初からやり直す必要がないようにします。

インポート プロパティを手動で設定する

次の手順では、インポート元を手動で構成する方法について説明します。

  1. データのインポート モジュールを実験に追加します。 このモジュールは、Studio (クラシック) の データ入力と出力 カテゴリにあります。

  2. [データ ソース] で、[Hive クエリ] を選択します。

  3. [Hive データベース クエリ] テキスト ボックスで、HiveQL を使用して読み取るデータを指定します。

    HiveQL は、Machine Learning Studio (クラシック) にデータを追加する前に、データの集計とデータ フィルター処理の実行にも使用できる、SQLに似たクエリ言語です。 ただし、Hive クエリは表形式でデータを返す必要があります。

    たとえば、このステートメントは有効な Hive クエリです。

    SELECT <column list> FROM table WHERE <expression>;

  4. [HCatalog サーバー URI] テキスト ボックスをクリックし、クラスターの完全修飾名を入力します。

    たとえば、mycluster001 という名前のクラスターを作成した場合は、次の形式を使用します。 https://mycluster001.azurehdinsight.net

  5. [Hadoop ユーザー アカウント名] テキスト ボックスをクリックし、クラスターのプロビジョニング時に使用した Hadoop ユーザー アカウントを貼り付けます。

  6. [Hadoop ユーザー アカウントのパスワード] テキスト ボックスをクリックし、クラスターのプロビジョニング時に使用した資格情報を入力します。

    Hadoop のクラスターの名前付けと認証の詳細については、「 HDInsight での Hadoop クラスターのプロビジョニング」を参照してください。

  7. [出力データの場所] で、データが格納される場所を示すオプションを選択します。 データが Hadoop 分散ファイル システム (HDFS) 内にある場合は、入力したのと同じアカウントとパスワードを使用してアクセスできる必要があります。 データが Azure にある場合は、ストレージ アカウントの場所と資格情報を指定します。

    • HDFS: HDFS サーバー URI を入力または貼り付けます。 必ず、プレフィックス なしで HDInsight クラスター名を HTTPS:// 使用してください。

    • Azure: Azure ストレージ アカウント名の場合は、Azure アカウントの名前を入力します。 たとえば、ストレージ アカウントの完全 URL が https://myshared.blob.core.windows.net であれば、「myshared」と入力します。

    • Azure ストレージ キー: ストレージ アカウントにアクセスするために用意されているキーをコピーして貼り付けます。

    • Azure コンテナー名には、クラスターの既定のコンテナーを指定します。 使用するコンテナーの確認については、「ヒント」セクションを参照してください。

  8. データが大きく変化しないと予測される場合、または実験を実行するたびにデータを再読み込みしたくない場合は、[Use cached results]\(キャッシュされた結果を使用する\) オプションを選択します。

    これを選択すると、モジュール パラメーターに他の変更がない場合、実験はモジュールの初回実行時にデータを読み込み、その後、キャッシュされたバージョンのデータセットを使用します。

    実験データセットの各イテレーションでデータセットを再読み込みする場合は、[ キャッシュされた結果を使用 する] オプションの選択を解除します。 データのインポートのパラメーターに変更が加わると、結果も再 読み込みされます

  9. 実験を実行します。

結果

完了したら、出力されたデータセットをクリックし、[Visualize]\(視覚化\) を選択し、データが正常にインポートされたかどうかを確認します。

エラーが発生した場合は、欠損値、追加の空の列、または互換性のないデータ型がないかデータを確認します。

HDInsight クラスターを構成し、機械学習実験で Hive クエリを使用する方法の例については、次のリソースを参照してください。

Hive には、さまざまな種類のデータのクリーンアップと前処理に優れた機能が用意されていますが、インポート後に、モデリング用のデータを準備するために役立つツールが見つかる場合があります。

  • メタデータの 編集 やその他のモジュールを使用して列名を変更し、ラベルと特徴を含む列を指定し、列データ型を指定します。 例については、「データセットの 処理」を参照してください。

  • Python を使用してテキスト データを処理し、句読点を削除したり、音声の一部にフラグを設定したりします。 例については、「 テキスト分類」を参照してください。

  • 異なるソースの複数のテーブルを 1 つのトレーニング データテーブルに結合します。 例については、「 予測メンテナンス」を参照してください。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

既定のコンテナーを確認する方法

すべての既定値を受け入れてクラスターを作成した場合、クラスターと同じ名前のコンテナーが、クラスターの作成時に同時に作成されました。 そのコンテナーは、クラスターの既定のコンテナーです。 ただし、クラスターの作成時に CUSTOM CREATE オプションを選択した場合は、既定のコンテナーを選択するための 2 つのオプションが提供されます。 最初のオプションは、既存のコンテナーを選択することです。 これを行うと、そのコンテナーがクラスターの既定のストレージ コンテナーになります。 2 番目のオプションは、 既定のコンテナーの作成です。 このオプションを使用する場合、既定のコンテナーの名前はクラスターと同じです。

Hive クエリから Python スクリプトを呼び出す方法

データのインポート モジュールを使用して、Python UDF を呼び出してレコードを処理する Hive クエリを実行できます。

詳細については、「 HDInsight での Hive と Pig での Python の使用」を参照してください。

Hive を使用してデータを前処理するときのメモリ不足の問題を回避する

Hive クエリを使用してビッグ データ ソースからレコードを抽出する場合、Hadoop クラスターの既定の構成の制限が多すぎて、MapReduce ジョブの実行をサポートできないことがあります。 たとえば、HDInsight の これらのリリース ノート では、既定の設定は 4 ノード クラスターとして定義されます。

MapReduce ジョブの要件が使用可能な容量を超えると、Hive クエリからメモリ不足エラー メッセージが返され、データのインポート操作が失敗する可能性があります。 このような場合は、次に示すように、 データのインポート モジュールで Hive クエリの既定のメモリ割り当てを変更できます。

Increase memory to maximum allowed on cluster

この例では、コマンドの set mapreduce.map.memory.mbset mapreduce.reduce.memory.mb が、メモリ量をクラスターで許容される最大量まで増やすために使用されます。

一般的な質問

同じデータを不必要に再読み込みしないようにするにはどうすればよいですか

ソース データが変更された場合は、 データのインポートを再実行することで、データセットを更新し、新しいデータを追加できます。 ただし、実験を実行するたびにソースから再び読み込むことを望まない場合、[Use cached results]\(キャッシュされた結果を使用する\) オプションを TRUE に設定します。 このオプションを TRUE に設定すると、モジュールは、同じソースと同じ入力オプションを使用して実験が以前に実行されたかどうかを確認し、以前の実行が見つかった場合は、ソースからデータを再読み込みする代わりにキャッシュ内のデータが使用されます。

ソースから読み取られているデータをフィルター処理できますか

データのインポート モジュール自体は、データの読み取り中のフィルター処理をサポートしていません。

Machine Learning Studio (クラシック) に読み込む前にデータをフィルター処理するには、Hive クエリまたはMapReduce ジョブを使用してデータを集計および変換します。

Machine Learning Studio (クラシック) に読み込まれた後にデータをフィルター処理するための複数のオプションもあります。

  • カスタム R スクリプトを使用して、必要なデータのみを取得します。
  • 相対式または正規表現を使用して データの分割 モジュールを使用して目的のデータを分離し、データセットとして保存します。

注意

必要以上に多くのデータが読み込まれたことが判明した場合、新しいデータセットを読み取ってから、以前のよりサイズの大きいデータと同じ名前で保存すると、キャッシュ内のデータセットをオーバーライドできます。

モジュールのパラメーター

名前 Range Type Default 説明
データ ソース List データ ソースまたはシンク Azure Blob Storage データ ソースには、HTTP、FTP、匿名 HTTPS、FTPS、Azure BLOB ストレージ内のファイル、Azure テーブル、Azure SQL Database、オンプレミスのSQL Server データベース、Hive テーブル、または OData エンドポイントを指定できます。
Hive データベース クエリ any StreamReader HQL クエリ
HCatalog サーバーの URI any String Templeton エンドポイント
Hadoop ユーザー アカウント名 any String Hadoop HDFS/HDInsight ユーザー名
Hadoop ユーザー アカウントのパスワード any SecureString Hadoop HDFS/HDInsight パスワード
出力データの場所 any DataLocation HDFS outputDir に HDFS または Azure を指定する
HDFS サーバーの URI any String HDFS Rest エンドポイント
Azure ストレージ アカウント名 any String Azure ストレージ アカウント名
Azure ストレージ キー any SecureString Azure ストレージ キー
Azure コンテナー名 any String Azure コンテナー名
データ コンテンツの種類 リスト (サブセット) URL の内容 OData データの形式の種類
ソース URL any String Power Query データ ソースの URL
キャッシュされた結果を使用する TRUE または FALSE Boolean FALSE description

出力

名前 Type 説明
結果のデータセット データ テーブル ダウンロードしたデータを含むデータセット

例外

例外 説明
エラー 0027 同じサイズが必要である 2 つのオブジェクトのサイズが異なる場合に、例外が発生します。
エラー 0003 1 つ以上の入力が null または空の場合に、例外が発生します。
エラー 0029 無効な URI が渡された場合に、例外が発生します。
エラー 0030 例外は、ファイルをダウンロードできない場合に発生します。
エラー 0002 1 つ以上のパラメーターが解析できなかった、または指定した型から対象のメソッドの種類で必要な型に変換されなかった場合に、例外が発生します。
エラー 0009 Azure ストレージのアカウント名またはコンテナー名が正しく指定されていない場合、例外が発生します。
エラー 0048 ファイルを開けない場合、例外が発生します。
エラー 0015 データベース接続に失敗した場合に、例外が発生します。
エラー 0046 指定したパスにディレクトリを作成できない場合に、例外が発生します。
エラー 0049 ファイルを解析できない場合、例外が発生します。

Studio (クラシック) モジュールに固有のエラーの一覧については、「Machine Learningエラー コード」を参照してください。

API の例外の一覧については、「REST API エラー コードMachine Learning」を参照してください。

関連項目

データのインポート
データのエクスポート
HTTP 経由の Web URL からのインポート
Azure SQL Database からのインポート
Azure Table からのインポート
Azure Blob Storage からのインポート
データ フィード プロバイダーからのインポート
オンプレミスの SQL Server データベースからのインポート