Azure Data Factory での Spark アクティビティを使用したデータの変換

適用対象: Azure Data Factory Azure Synapse Analytics

Data Factory パイプラインの Spark アクティビティでは、独自のまたはオンデマンドの HDInsight クラスターで Spark プログラムを実行します。 この記事は、データ変換とサポートされる変換アクティビティの概要を説明する、 データ変換アクティビティ に関する記事に基づいています。 オンデマンドの Spark のリンクされたサービスを使用すると、Data Factory は自動的に Spark クラスターを作成し、ジャストインタイムでデータを処理し、処理が完了するとクラスターを削除します。

Spark アクティビティのプロパティ

Spark アクティビティのサンプルの JSON 定義を次に示します。

{
    "name": "Spark Activity",
    "description": "Description",
    "type": "HDInsightSpark",
    "linkedServiceName": {
        "referenceName": "MyHDInsightLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "sparkJobLinkedService": {
            "referenceName": "MyAzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "rootPath": "adfspark",
        "entryFilePath": "test.py",
        "sparkConfig": {
            "ConfigItem1": "Value"
        },
        "getDebugInfo": "Failure",
        "arguments": [
            "SampleHadoopJobArgument1"
        ]
    }
}

次の表で、JSON 定義で使用される JSON プロパティについて説明します。

プロパティ 説明 必須
name パイプラインのアクティビティの名前。 はい
description アクティビティの動作を説明するテキスト。 いいえ
type Spark アクティビティの場合、アクティビティの種類は HDInsightSpark です。 はい
linkedServiceName Spark プログラムが実行されている HDInsight Spark のリンクされたサービスの名前。 このリンクされたサービスの詳細については、計算のリンクされたサービスに関する記事をご覧ください。 はい
SparkJobLinkedService Spark ジョブ ファイル、依存関係、およびログが含まれる Azure Storage のリンクされたサービス。 ここでは Azure Blob Storage および ADLS Gen2 にリンクされたサービスのみがサポートされています。 指定しない場合は、HDInsight クラスターに関連付けられているストレージが使用されます。 このプロパティの値には、Azure Storage のリンクされたサービスのみを指定できます。 いいえ
rootPath Azure BLOB コンテナーと Spark ファイルを含むフォルダー。 ファイル名は大文字と小文字が区別されます。 このフォルダーの構造の詳細については、「フォルダー構造」(次のセクション) をご覧ください。 はい
entryFilePath Spark コード/パッケージのルート フォルダーへの相対パス。 エントリ ファイルは、Python ファイルまたは .jar ファイルのいずれかにする必要があります。 はい
className アプリケーションの Java/Spark のメイン クラス いいえ
引数 Spark プログラムのコマンドライン引数の一覧です。 いいえ
proxyUser Spark プログラムの実行を偽装する借用すユーザー アカウント いいえ
sparkConfig Spark Configuration - Application properties (Spark 構成 - アプリケーションのプロパティ)」と題するトピックに示されている Spark 構成プロパティの値を指定します。 いいえ
getDebugInfo HDInsight クラスターで使用されている Azure Storage または sparkJobLinkedService で指定された Azure Storage に Spark ログ ファイルがコピーされるタイミングを指定します。 使用できる値は以下の通りです。None、Always、または Failure。 既定値:[なし] : いいえ

フォルダー構造

Spark ジョブは、Pig/Hive ジョブよりも拡張性に優れています。 Spark ジョブの場合、jar パッケージ (java CLASSPATH に配置)、python ファイル (PYTHONPATH に配置) など、複数の依存関係を利用できます。

HDInsight のリンクされたサービスによって参照される Azure Blob Storage に、次のフォルダー構造を作成します。 その後、依存ファイルを、entryFilePath で表されるルート フォルダー内の適切なサブフォルダーにアップロードします。 たとえば、python ファイルはルート フォルダーの pyFiles サブフォルダーに、jar ファイルはルート フォルダーの jar サブフォルダーにアップロードします。 実行時、Data Factory サービスに必要な Azure Blob Storage のフォルダー構造を次に示します。

Path 説明 必須 Type
. (ルート) ストレージのリンクされたサービスにおける Spark ジョブのルート パス はい Folder
<user defined > Spark ジョブの入力ファイルを指定するパス はい ファイル
./jars このフォルダーのすべてのファイルがアップロードされ、クラスターの java classpath に配置されます いいえ Folder
./pyFiles このフォルダーのすべてのファイルがアップロードされ、クラスターの PYTHONPATH に配置されます いいえ Folder
./files このフォルダーのすべてのファイルがアップロードされ、Executor 作業ディレクトリに配置されます いいえ Folder
./archives このフォルダーのファイルは圧縮されていません いいえ Folder
./logs Spark クラスターのログが格納されているフォルダー。 いいえ Folder

次の例のストレージには、HDInsight のリンクされたサービスによって参照される Azure Blob Storage に 2 つの Spark ジョブ ファイルが含まれています。

SparkJob1
    main.jar
    files
        input1.txt
        input2.txt
    jars
        package1.jar
        package2.jar
    logs
    
    archives
    
    pyFiles

SparkJob2
    main.py
    pyFiles
        scrip1.py
        script2.py
    logs
    
    archives
    
    jars
    
    files
    

次のステップ

別の手段でデータを変換する方法を説明している次の記事を参照してください。