Hive クエリからのインポート
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
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 クエリにデータのインポート モジュールを使用する場合、いくつかの既知の問題があります。
- Enterpriseセキュリティ パッケージはサポートされていません
- /tmp/hive は書き込み不可
Hive クエリからデータをインポートする方法
ウィザードを使用する
このモジュールには、ストレージ オプションの選択、既存のサブスクリプションとアカウントの選択、すべてのオプションの迅速な構成に役立つ新しいウィザードが用意されています。
データのインポート モジュールを実験に追加します。 このモジュールは、Studio (クラシック) の データ入力と出力 カテゴリにあります。
[ データのインポート ウィザードの起動 ] をクリックし、プロンプトに従います。
構成が完了したら、実際にデータを実験にコピーするには、モジュールを右クリックし、[ 選択した実行] を選択します。
既存のデータ接続を編集する必要がある場合、ウィザードは以前のすべての構成の詳細を読み込み、最初からやり直す必要がないようにします。
インポート プロパティを手動で設定する
次の手順では、インポート元を手動で構成する方法について説明します。
データのインポート モジュールを実験に追加します。 このモジュールは、Studio (クラシック) の データ入力と出力 カテゴリにあります。
[データ ソース] で、[Hive クエリ] を選択します。
[Hive データベース クエリ] テキスト ボックスで、HiveQL を使用して読み取るデータを指定します。
HiveQL は、Machine Learning Studio (クラシック) にデータを追加する前に、データの集計とデータ フィルター処理の実行にも使用できる、SQLに似たクエリ言語です。 ただし、Hive クエリは表形式でデータを返す必要があります。
たとえば、このステートメントは有効な Hive クエリです。
SELECT <column list> FROM table WHERE <expression>;
[HCatalog サーバー URI] テキスト ボックスをクリックし、クラスターの完全修飾名を入力します。
たとえば、mycluster001 という名前のクラスターを作成した場合は、次の形式を使用します。
https://mycluster001.azurehdinsight.net
[Hadoop ユーザー アカウント名] テキスト ボックスをクリックし、クラスターのプロビジョニング時に使用した Hadoop ユーザー アカウントを貼り付けます。
[Hadoop ユーザー アカウントのパスワード] テキスト ボックスをクリックし、クラスターのプロビジョニング時に使用した資格情報を入力します。
Hadoop のクラスターの名前付けと認証の詳細については、「 HDInsight での Hadoop クラスターのプロビジョニング」を参照してください。
[出力データの場所] で、データが格納される場所を示すオプションを選択します。 データが Hadoop 分散ファイル システム (HDFS) 内にある場合は、入力したのと同じアカウントとパスワードを使用してアクセスできる必要があります。 データが Azure にある場合は、ストレージ アカウントの場所と資格情報を指定します。
HDFS: HDFS サーバー URI を入力または貼り付けます。 必ず、プレフィックス なしで HDInsight クラスター名を
HTTPS://
使用してください。Azure: Azure ストレージ アカウント名の場合は、Azure アカウントの名前を入力します。 たとえば、ストレージ アカウントの完全 URL が
https://myshared.blob.core.windows.net
であれば、「myshared
」と入力します。Azure ストレージ キー: ストレージ アカウントにアクセスするために用意されているキーをコピーして貼り付けます。
Azure コンテナー名には、クラスターの既定のコンテナーを指定します。 使用するコンテナーの確認については、「ヒント」セクションを参照してください。
データが大きく変化しないと予測される場合、または実験を実行するたびにデータを再読み込みしたくない場合は、[Use cached results]\(キャッシュされた結果を使用する\) オプションを選択します。
これを選択すると、モジュール パラメーターに他の変更がない場合、実験はモジュールの初回実行時にデータを読み込み、その後、キャッシュされたバージョンのデータセットを使用します。
実験データセットの各イテレーションでデータセットを再読み込みする場合は、[ キャッシュされた結果を使用 する] オプションの選択を解除します。 データのインポートのパラメーターに変更が加わると、結果も再 読み込みされます。
実験を実行します。
結果
完了したら、出力されたデータセットをクリックし、[Visualize]\(視覚化\) を選択し、データが正常にインポートされたかどうかを確認します。
エラーが発生した場合は、欠損値、追加の空の列、または互換性のないデータ型がないかデータを確認します。
例
HDInsight クラスターを構成し、機械学習実験で Hive クエリを使用する方法の例については、次のリソースを参照してください。
この記事では、Hive: Advanced Analytics Process and Technology in Action: Using HDInsight Hadoop クラスターを使用して、クラスターを作成し、データをアップロードし、Studio (クラシック) からデータを呼び出す方法について詳しく説明します。
MVP Vesa Tikkanen のこのブログでは、Linux 上の HD クラスターから非常に大きなファイル (分散クエリ) を読み取るときの問題と回避策について説明します。Azure から Linux HDInsight Hive を読み取るML
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 クエリの既定のメモリ割り当てを変更できます。
この例では、コマンドの set mapreduce.map.memory.mb
と set 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 データベースからのインポート