Azure Data Factory で Spark アクティビティを使用してクラウドのデータを変換するTransform data in the cloud by using a Spark activity in Azure Data Factory

このチュートリアルでは、Azure Portal を使用して Azure Data Factory パイプラインを作成します。In this tutorial, you use the Azure portal to create an Azure Data Factory pipeline. このパイプラインは、Spark アクティビティとオンデマンドの Azure HDInsight のリンクされたサービスを使用して、データを変換します。This pipeline transforms data by using a Spark activity and an on-demand Azure HDInsight linked service.

このチュートリアルでは、以下の手順を実行します。You perform the following steps in this tutorial:

  • データ ファクトリを作成します。Create a data factory.
  • Spark アクティビティを使用するパイプラインを作成します。Create a pipeline that uses a Spark activity.
  • パイプラインの実行をトリガーする。Trigger a pipeline run.
  • パイプラインの実行を監視します。Monitor the pipeline run.

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

  • Azure ストレージ アカウントAzure storage account. Python スクリプトと入力ファイルを作成し、Azure Storage にアップロードします。You create a Python script and an input file, and you upload them to Azure Storage. Spark プログラムからの出力は、このストレージ アカウントに格納されます。The output from the Spark program is stored in this storage account. オンデマンドの Spark クラスターでは、同じストレージ アカウントがプライマリ ストレージとして使用されます。The on-demand Spark cluster uses the same storage account as its primary storage.

注意

HDInsight は、Standard レベルで、汎用ストレージ アカウントのみをサポートしています。HdInsight supports only general-purpose storage accounts with standard tier. アカウントが Premium または BLOB のみのストレージ アカウントでないことを確認してください。Make sure that the account is not a premium or blob only storage account.

Python スクリプトを BLOB ストレージ アカウントにアップロードするUpload the Python script to your Blob storage account

  1. 次の内容が含まれた、WordCount_Spark.py という名前の Python ファイルを作成します。Create a Python file named WordCount_Spark.py with the following content:

    import sys
    from operator import add
    
    from pyspark.sql import SparkSession
    
    def main():
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/inputfiles/minecraftstory.txt").rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' ')) \
            .map(lambda x: (x, 1)) \
            .reduceByKey(add)
        counts.saveAsTextFile("wasbs://adftutorial@<storageaccountname>.blob.core.windows.net/spark/outputfiles/wordcount")
    
        spark.stop()
    
    if __name__ == "__main__":
        main()
    
  2. <storageAccountName> を Azure ストレージ アカウントの名前に置き換えます。Replace <storageAccountName> with the name of your Azure storage account. その後、ファイルを保存します。Then, save the file.

  3. Azure BLOB ストレージで、adftutorial という名前のコンテナーを作成します (存在しない場合)。In Azure Blob storage, create a container named adftutorial if it does not exist.

  4. spark という名前のフォルダーを作成します。Create a folder named spark.

  5. spark フォルダーの下に、script という名前のサブフォルダーを作成します。Create a subfolder named script under the spark folder.

  6. WordCount_Spark.py ファイルを script サブフォルダーにアップロードします。Upload the WordCount_Spark.py file to the script subfolder.

入力ファイルをアップロードするUpload the input file

  1. minecraftstory.txt という名前のファイルを作成し、任意のテキストを入力しておきます。Create a file named minecraftstory.txt with some text. このテキストの単語数が Spark プログラムによってカウントされます。The Spark program counts the number of words in this text.
  2. spark フォルダーの下に、inputfiles という名前のサブフォルダーを作成します。Create a subfolder named inputfiles in the spark folder.
  3. inputfiles サブフォルダーに minecraftstory.txt ファイルをアップロードします。Upload the minecraftstory.txt file to the inputfiles subfolder.

Data Factory を作成する。Create a data factory

  1. Web ブラウザー (Microsoft Edge または Google Chrome) を起動します。Launch Microsoft Edge or Google Chrome web browser. 現在、Data Factory の UI がサポートされる Web ブラウザーは Microsoft Edge と Google Chrome だけです。Currently, Data Factory UI is supported only in Microsoft Edge and Google Chrome web browsers.

  2. 左側のメニューの [新規] を選択し、 [データ + 分析] を選択して、 [Data Factory] を選択します。Select New on the left menu, select Data + Analytics, and then select Data Factory.

    [新規] ウィンドウでの [Data Factory] の選択

  3. [新しいデータ ファクトリ] ウィンドウで、 [名前] に「ADFTutorialDataFactory」と入力します。In the New data factory pane, enter ADFTutorialDataFactory under Name.

    [新しいデータ ファクトリ] ウィンドウ

    Azure データ ファクトリの名前は グローバルに一意にする必要があります。The name of the Azure data factory must be globally unique. 次のエラーが発生した場合は、データ ファクトリの名前を変更してくださいIf you see the following error, change the name of the data factory. ( <yourname>ADFTutorialDataFactory など)。(For example, use <yourname>ADFTutorialDataFactory). Data Factory アーティファクトの名前付け規則については、Data Factory の名前付け規則に関する記事を参照してください。For naming rules for Data Factory artifacts, see the Data Factory - naming rules article.

    名前が使用できないときのエラー

  4. [サブスクリプション] で、データ ファクトリを作成する Azure サブスクリプションを選択します。For Subscription, select your Azure subscription in which you want to create the data factory.

  5. [リソース グループ] で、次の手順のいずれかを行います。For Resource Group, take one of the following steps:

    • [Use existing (既存のものを使用)] を選択し、ドロップダウン リストから既存のリソース グループを選択します。Select Use existing, and select an existing resource group from the drop-down list.
    • [新規作成] を選択し、リソース グループの名前を入力します。Select Create new, and enter the name of a resource group.

    このクイックスタートの一部の手順は、ADFTutorialResourceGroup という名前のリソース グループを使用することを前提としています。Some of the steps in this quickstart assume that you use the name ADFTutorialResourceGroup for the resource group. リソース グループの詳細については、 リソース グループを使用した Azure のリソースの管理に関するページを参照してください。To learn about resource groups, see Using resource groups to manage your Azure resources.

  6. [バージョン] で、 [V2] を選択します。For Version, select V2.

  7. [場所] で、データ ファクトリの場所を選択します。For Location, select the location for the data factory.

    現在 Data Factory が利用できる Azure リージョンの一覧については、次のページで目的のリージョンを選択し、 [分析] を展開して [Data Factory] を探してください。リージョン別の利用可能な製品For a list of Azure regions in which Data Factory is currently available, select the regions that interest you on the following page, and then expand Analytics to locate Data Factory: Products available by region. Data Factory で使用するデータ ストア (Azure Storage、Azure SQL Database など) やコンピューティング (HDInsight など) は他のリージョンに配置できます。The data stores (like Azure Storage and Azure SQL Database) and computes (like HDInsight) that Data Factory uses can be in other regions.

  8. 作成 を選択します。Select Create.

  9. 作成が完了すると、 [データ ファクトリ] ページが表示されます。After the creation is complete, you see the Data factory page. [作成と監視] タイルを選択して、別のタブで Data Factory UI アプリケーションを起動します。Select the Author & Monitor tile to start the Data Factory UI application on a separate tab.

    [作成と監視] タイルが表示された、データ ファクトリのホーム ページ

リンクされたサービスを作成しますCreate linked services

このセクションでは、2 つのリンクされたサービスを作成します。You author two linked services in this section:

  • Azure ストレージ アカウントをデータ ファクトリにリンクする、Azure Storage のリンクされたサービスAn Azure Storage linked service that links an Azure storage account to the data factory. このストレージは、オンデマンドの HDInsight クラスターによって使用されます。This storage is used by the on-demand HDInsight cluster. ここには、実行される Spark スクリプトも含まれています。It also contains the Spark script to be run.
  • オンデマンドの HDInsight のリンクされたサービスAn on-demand HDInsight linked service. Azure Data Factory によって自動的に HDInsight クラスターが作成され、Spark プログラムが実行されます。Azure Data Factory automatically creates an HDInsight cluster and runs the Spark program. HDInsight クラスターは、事前に構成された時間だけアイドル状態になったら削除されます。It then deletes the HDInsight cluster after the cluster is idle for a preconfigured time.

Azure Storage のリンクされたサービスを作成するCreate an Azure Storage linked service

  1. [Let's get started](始めましょう) ページで、左側のパネルで [編集] タブに切り替えます。On the Let's get started page, switch to the Edit tab in the left panel.

    [Let's get started](始めましょう) ページ

  2. ウィンドウの下部にある [接続] を選択して、 [+ 新規] を選択します。Select Connections at the bottom of the window, and then select + New.

    新しい接続を作成するためのボタン

  3. [New Linked Service](新しいリンクされたサービス) ウィンドウで、 [データ ストア] > [Azure Blob Storage] を選択し、 [続行] を選択します。In the New Linked Service window, select Data Store > Azure Blob Storage, and then select Continue.

    [Azure Blob Storage] タイルの選択

  4. [ストレージ アカウント名] で一覧から名前を選択し、 [保存] を選択します。For Storage account name, select the name from the list, and then select Save.

    ストレージ アカウント名を指定するボックス

オンデマンドの HDInsight のリンクされたサービスを作成するCreate an on-demand HDInsight linked service

  1. [+ 新規] ボタンをもう一度選択して、別のリンクされたサービスを作成します。Select the + New button again to create another linked service.

  2. [New Linked Service](新しいリンクされたサービス) ウィンドウで、 [コンピューティング] > [Azure HDInsight] の順に選択し、 [続行] を選択します。In the New Linked Service window, select Compute > Azure HDInsight, and then select Continue.

    [Azure HDInsight] タイルの選択

  3. [New Linked Service](新しいリンクされたサービス) ウィンドウで、次の手順を完了します。In the New Linked Service window, complete the following steps:

    a.a. [名前] に「AzureHDInsightLinkedService」と入力します。For Name, enter AzureHDInsightLinkedService.

    b.b. [Type](タイプ)[On-demand HDInsight](オンデマンド HDInsight) が選択されていることを確認します。For Type, confirm that On-demand HDInsight is selected.

    c.c. [Azure Storage Linked Service](Azure Storage のリンクされたサービス)[AzureBlobStorage1] を選択します。For Azure Storage Linked Service, select AzureBlobStorage1. このリンクされたサービスは、前の手順で作成したものです。You created this linked service earlier. 別の名前を使用した場合は、ここで適切な名前を指定します。If you used a different name, specify the right name here.

    d.d. [クラスターの種類][spark] を選択します。For Cluster type, select spark.

    e.e. [サービス プリンシパル ID] に、HDInsight クラスターを作成するアクセス許可を備えたサービス プリンシパルの ID を入力します。For Service principal id, enter the ID of the service principal that has permission to create an HDInsight cluster.

    このサービス プリンシパルは、サブスクリプションまたはクラスターが作成されるリソース グループの共同作成者ロールのメンバーである必要があります。This service principal needs to be a member of the Contributor role of the subscription or the resource group in which the cluster is created. 詳細については、Azure Active Directory アプリケーションとサービス プリンシパルの作成に関するページを参照してください。For more information, see Create an Azure Active Directory application and service principal.

    f.f. [サービス プリンシパル キー] に、キーを入力します。For Service principal key, enter the key.

    g.g. [リソース グループ] に、データ ファクトリの作成時に使用したのと同じリソース グループを選択します。For Resource group, select the same resource group that you used when you created the data factory. Spark クラスターは、このリソース グループに作成されます。The Spark cluster is created in this resource group.

    h.h. [OS の種類] を展開します。Expand OS type.

    i.i. [クラスター ユーザー名] に名前を入力します。Enter a name for Cluster user name.

    j.j. そのユーザーのクラスター パスワードを入力します。Enter the Cluster password for the user.

    k.k. [完了] を選択します。Select Finish.

    HDInsight のリンクされたサービスの設定

注意

Azure HDInsight には、サポートされる各 Azure リージョンで使用できるコアの合計数に制限があります。Azure HDInsight limits the total number of cores that you can use in each Azure region that it supports. オンデマンドの HDInsight のリンクされたサービスの場合、HDInsight クラスターは、プライマリ ストレージとして使用されるのと同じ Azure ストレージの場所に作成されます。For the on-demand HDInsight linked service, the HDInsight cluster is created in the same Azure Storage location that's used as its primary storage. クラスターを正常に作成するための十分なコア クォータがあることを確認します。Ensure that you have enough core quotas for the cluster to be created successfully. 詳細については、「Hadoop、Spark、Kafka などの HDInsight クラスターをセットアップする」を参照してください。For more information, see Set up clusters in HDInsight with Hadoop, Spark, Kafka, and more.

パイプラインを作成する。Create a pipeline

  1. + (正符号) ボタンを選択し、メニューの [パイプライン] を選択します。Select the + (plus) button, and then select Pipeline on the menu.

    新しいパイプラインを作成するためのボタン

  2. [アクティビティ] ツールボックスで [HDInsight] を展開します。In the Activities toolbox, expand HDInsight. [アクティビティ] ツールボックスからパイプライン デザイナー画面に Spark アクティビティをドラッグします。Drag the Spark activity from the Activities toolbox to the pipeline designer surface.

    Spark アクティビティのドラッグ

  3. 下部の Spark アクティビティ ウィンドウのプロパティで、次の手順を完了します。In the properties for the Spark activity window at the bottom, complete the following steps:

    a.a. [HDI Cluster](HDI クラスター) タブに切り替えます。Switch to the HDI Cluster tab.

    b.b. (前の手順で作成した) AzureHDInsightLinkedService を選択します。Select AzureHDInsightLinkedService (which you created in the previous procedure).

    HDInsight のリンクされたサービスの指定

  4. [Script/Jar](スクリプト/Jar) タブに切り替えて、次の手順を実行します。Switch to the Script/Jar tab, and complete the following steps:

    a.a. [Job Linked Service](ジョブのリンクされたサービス)[AzureBlobStorage1] を選択します。For Job Linked Service, select AzureBlobStorage1.

    b.b. [ストレージを参照] を選択します。Select Browse Storage.

    [Script/Jar](スクリプト/Jar) タブでの Spark スクリプトの指定

    c.c. adftutorial/spark/script フォルダーに移動します。WordCount_Spark.py を選択し、 [完了] を選択します。Browse to the adftutorial/spark/script folder, select WordCount_Spark.py, and then select Finish.

  5. パイプラインを検証するために、ツール バーの [検証] ボタンを選択します。To validate the pipeline, select the Validate button on the toolbar. >> (右矢印) ボタンを選択して、検証ウィンドウを閉じます。Select the >> (right arrow) button to close the validation window.

    [検証] ボタン

  6. [すべて公開] を選択します。Select Publish All. Data Factory UI により、エンティティ (リンクされたサービスとパイプライン) が Azure Data Factory サービスに公開されます。The Data Factory UI publishes entities (linked services and pipeline) to the Azure Data Factory service.

    [すべて公開] ボタン

パイプラインの実行をトリガーするTrigger a pipeline run

ツール バーの [トリガーの追加] を選択し、 [Trigger Now](今すぐトリガー) を選択します。Select Add Trigger on the toolbar, and then select Trigger Now.

[トリガー] ボタンと [Trigger Now](今すぐトリガー) ボタン

パイプラインの実行を監視しますMonitor the pipeline run

  1. [監視] タブに切り替えます。パイプラインが実行されていることを確認します。Switch to the Monitor tab. Confirm that you see a pipeline run. Spark クラスターの作成には約 20 分かかります。It takes approximately 20 minutes to create a Spark cluster.

  2. [最新の情報に更新] を定期的にクリックして、パイプラインの実行の状態を確認します。Select Refresh periodically to check the status of the pipeline run.

    [最新の情報に更新] ボタンが表示されている、パイプライン実行を監視するためのタブ

  3. パイプラインの実行に関連付けられているアクティビティの実行を表示するために、 [アクション] 列の [View Activity Runs](アクティビティの実行の表示) を選択します。To see activity runs associated with the pipeline run, select View Activity Runs in the Actions column.

    パイプラインの実行の状態

    上部の [All Pipeline Runs](すべてのパイプラインの実行) リンクを選択すると、パイプラインの実行ビューに戻ることができます。You can switch back to the pipeline runs view by selecting the All Pipeline Runs link at the top.

    "アクティビティの実行" ビュー

出力を検証するVerify the output

adftutorial コンテナーの spark/otuputfiles/wordcount フォルダーに出力ファイルが作成されていることを確認します。Verify that the output file is created in the spark/otuputfiles/wordcount folder of the adftutorial container.

出力ファイルの場所

このファイルには、入力テキスト ファイルに含まれている単語と、各単語がファイル内に出現する回数が含まれています。The file should have each word from the input text file and the number of times the word appeared in the file. 例:For example:

(u'This', 1)
(u'a', 1)
(u'is', 1)
(u'test', 1)
(u'file', 1)

次の手順Next steps

このサンプルのパイプラインでは、Spark アクティビティとオンデマンドの HDInsight のリンクされたサービスを使用して、データを変換します。The pipeline in this sample transforms data by using a Spark activity and an on-demand HDInsight linked service. 以下の方法について学習しました。You learned how to:

  • データ ファクトリを作成します。Create a data factory.
  • Spark アクティビティを使用するパイプラインを作成します。Create a pipeline that uses a Spark activity.
  • パイプラインの実行をトリガーする。Trigger a pipeline run.
  • パイプラインの実行を監視します。Monitor the pipeline run.

仮想ネットワークにある Azure HDInsight クラスター上で Hive スクリプトを実行してデータを変換する方法については、次のチュートリアルに進んでください。To learn how to transform data by running a Hive script on an Azure HDInsight cluster that's in a virtual network, advance to the next tutorial: