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

Data Factory パイプラインの Spark アクティビティでは、独自のまたはオンデマンドの HDInsight クラスターで Spark プログラムを実行します。The Spark activity in a Data Factory pipeline executes a Spark program on your own or on-demand HDInsight cluster. この記事は、データ変換とサポートされる変換アクティビティの概要を説明する、 データ変換アクティビティ に関する記事に基づいています。This article builds on the data transformation activities article, which presents a general overview of data transformation and the supported transformation activities. オンデマンドの Spark のリンクされたサービスを使用すると、Data Factory は自動的に Spark クラスターを作成し、ジャストインタイムでデータを処理し、処理が完了するとクラスターを削除します。When you use an on-demand Spark linked service, Data Factory automatically creates a Spark cluster for you just-in-time to process the data and then deletes the cluster once the processing is complete.

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

Spark アクティビティのサンプルの JSON 定義を次に示します。Here is the sample JSON definition of a Spark Activity:

{
    "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 プロパティについて説明します。The following table describes the JSON properties used in the JSON definition:

プロパティProperty 説明Description 必須Required
名前name パイプラインのアクティビティの名前。Name of the activity in the pipeline. はいYes
descriptiondescription アクティビティの動作を説明するテキスト。Text describing what the activity does. いいえNo
typetype Spark アクティビティの場合、アクティビティの種類は HDInsightSpark です。For Spark Activity, the activity type is HDInsightSpark. はいYes
linkedServiceNamelinkedServiceName Spark プログラムが実行されている HDInsight Spark のリンクされたサービスの名前。Name of the HDInsight Spark Linked Service on which the Spark program runs. このリンクされたサービスの詳細については、計算のリンクされたサービスに関する記事をご覧ください。To learn about this linked service, see Compute linked services article. はいYes
SparkJobLinkedServiceSparkJobLinkedService Spark ジョブ ファイル、依存関係、およびログが含まれる Azure Storage のリンクされたサービス。The Azure Storage linked service that holds the Spark job file, dependencies, and logs. 指定しない場合は、HDInsight クラスターに関連付けられているストレージが使用されます。If you do not specify a value for this property, the storage associated with HDInsight cluster is used. このプロパティの値には、Azure Storage のリンクされたサービスのみを指定できます。The value of this property can only be an Azure Storage linked service. いいえNo
rootPathrootPath Azure BLOB コンテナーと Spark ファイルを含むフォルダー。The Azure Blob container and folder that contains the Spark file. ファイル名は大文字と小文字が区別されます。The file name is case-sensitive. このフォルダーの構造の詳細については、「フォルダー構造」(次のセクション) をご覧ください。Refer to folder structure section (next section) for details about the structure of this folder. はいYes
entryFilePathentryFilePath Spark コード/パッケージのルート フォルダーへの相対パス。Relative path to the root folder of the Spark code/package. エントリ ファイルは、Python ファイルまたは .jar ファイルのいずれかにする必要があります。The entry file must be either a Python file or a .jar file. はいYes
classNameclassName アプリケーションの Java/Spark のメイン クラスApplication's Java/Spark main class いいえNo
argumentsarguments Spark プログラムのコマンドライン引数の一覧です。A list of command-line arguments to the Spark program. いいえNo
proxyUserproxyUser Spark プログラムの実行を偽装する借用すユーザー アカウントThe user account to impersonate to execute the Spark program いいえNo
sparkConfigsparkConfig Spark Configuration - Application properties (Spark 構成 - アプリケーションのプロパティ)」と題するトピックに示されている Spark 構成プロパティの値を指定します。Specify values for Spark configuration properties listed in the topic: Spark Configuration - Application properties. いいえNo
getDebugInfogetDebugInfo HDInsight クラスターで使用されている Azure Storage または sparkJobLinkedService で指定された Azure Storage に Spark ログ ファイルがコピーされるタイミングを指定します。Specifies when the Spark log files are copied to the Azure storage used by HDInsight cluster (or) specified by sparkJobLinkedService. 使用できる値は以下の通りです。None、Always、または Failure。Allowed values: None, Always, or Failure. 既定値:なし。Default value: None. いいえNo

フォルダー構造Folder structure

Spark ジョブは、Pig/Hive ジョブよりも拡張性に優れています。Spark jobs are more extensible than Pig/Hive jobs. Spark ジョブの場合、jar パッケージ (java CLASSPATH に配置)、python ファイル (PYTHONPATH に配置) など、複数の依存関係を利用できます。For Spark jobs, you can provide multiple dependencies such as jar packages (placed in the java CLASSPATH), python files (placed on the PYTHONPATH), and any other files.

HDInsight のリンクされたサービスによって参照される Azure Blob Storage に、次のフォルダー構造を作成します。Create the following folder structure in the Azure Blob storage referenced by the HDInsight linked service. その後、依存ファイルを、entryFilePath で表されるルート フォルダー内の適切なサブフォルダーにアップロードします。Then, upload dependent files to the appropriate sub folders in the root folder represented by entryFilePath. たとえば、python ファイルはルート フォルダーの pyFiles サブフォルダーに、jar ファイルはルート フォルダーの jar サブフォルダーにアップロードします。For example, upload python files to the pyFiles subfolder and jar files to the jars subfolder of the root folder. 実行時、Data Factory サービスに必要な Azure Blob Storage のフォルダー構造を次に示します。At runtime, Data Factory service expects the following folder structure in the Azure Blob storage:

PathPath 説明Description 必須Required 種類Type
. (ルート). (root) ストレージのリンクされたサービスにおける Spark ジョブのルート パスThe root path of the Spark job in the storage linked service はいYes FolderFolder
<user defined ><user defined > Spark ジョブの入力ファイルを指定するパスThe path pointing to the entry file of the Spark job はいYes ファイルFile
./jars./jars このフォルダーのすべてのファイルがアップロードされ、クラスターの java classpath に配置されますAll files under this folder are uploaded and placed on the java classpath of the cluster いいえNo FolderFolder
./pyFiles./pyFiles このフォルダーのすべてのファイルがアップロードされ、クラスターの PYTHONPATH に配置されますAll files under this folder are uploaded and placed on the PYTHONPATH of the cluster いいえNo FolderFolder
./files./files このフォルダーのすべてのファイルがアップロードされ、Executor 作業ディレクトリに配置されますAll files under this folder are uploaded and placed on executor working directory いいえNo FolderFolder
./archives./archives このフォルダーのファイルは圧縮されていませんAll files under this folder are uncompressed いいえNo FolderFolder
./logs./logs Spark クラスターのログが格納されているフォルダー。The folder that contains logs from the Spark cluster. いいえNo FolderFolder

次の例のストレージには、HDInsight のリンクされたサービスによって参照される Azure Blob Storage に 2 つの Spark ジョブ ファイルが含まれています。Here is an example for a storage containing two Spark job files in the Azure Blob Storage referenced by the HDInsight linked service.

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

SparkJob2
    main.py
    pyFiles
        scrip1.py
        script2.py
    logs

次の手順Next steps

別の手段でデータを変換する方法を説明している次の記事を参照してください。See the following articles that explain how to transform data in other ways: