Mengubah data menggunakan aktivitas Spark di Azure Data Factory dan Azure Synapse Analytics

BERLAKU UNTUK: Azure Data Factory Azure Synapse Analytics

Aktivitas Spark di alur pabrik data dan Synapse menjalankan program Spark di kluster HDInsight sendiri atau sesuai permintaan. Artikel ini membangun artikel aktivitas transformasi data, yang menyajikan gambaran umum tentang transformasi data dan aktivitas transformasi yang didukung. Ketika Anda menggunakan layanan terkait Spark sesuai permintaan, layanan secara otomatis membuat kluster Spark untuk Anda tepat waktu untuk memproses data lalu menghapus kluster setelah pemrosesan selesai.

Properti aktivitas Spark

Berikut adalah sampel definisi JSON dengan Aktivitas Spark:

{
    "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"
        ]
    }
}

Tabel berikut ini menjelaskan properti JSON yang digunakan dalam definisi JSON:

Properti Deskripsi Diperlukan
nama Nama aktivitas di dalam alur. Ya
deskripsi Teks yang menjelaskan apa yang dilakukan aktivitas. Tidak
jenis Untuk Spark Activity, jenis aktivitasnya adalah HDInsightSpark. Ya
linkedServiceName Nama Layanan Tertaut HDInsight Spark tempat program Spark berjalan. Untuk mempelajari layanan tertaut ini, lihat artikel Layanan tertaut komputasi. Ya
SparkJobLinkedService Layanan tertaut Microsoft Azure Storage yang menyimpan file pekerjaan, dependensi, dan log Spark. Hanya layanan tertaut Azure Blob Storage dan ADLS Gen2 yang didukung di sini. Jika Anda tidak menentukan nilai untuk properti ini, penyimpanan yang terkait dengan kluster HDInsight digunakan. Nilai properti ini hanya dapat menjadi layanan tertaut Azure Storage. Tidak
rootPath Wadah dan folder Azure Blob yang berisi file Spark. Nama file peka huruf besar/kecil. Lihat bagian struktur folder (bagian berikutnya) untuk detail tentang struktur folder ini. Ya
entryFilePath Jalur relatif ke folder akar dari kode/paket Spark. File entri harus berupa file Python atau file .jar. Ya
className Kelas utama Java/Spark aplikasi Tidak
argumen Daftar argumen baris perintah ke program Spark. Tidak
proxyUser Akun pengguna untuk menyamar untuk menjalankan program Spark Tidak
sparkConfig Tentukan nilai untuk properti konfigurasi Spark yang tercantum dalam topik: Konfigurasi Spark - Properti aplikasi. Tidak
getDebugInfo Menentukan kapan file log Spark disalin ke penyimpanan Azure yang digunakan oleh kluster HDInsight (atau) ditentukan oleh sparkJobLinkedService. Nilai yang diizinkan: None, Always, atau Failure. Nilai default: Tidak ada. Tidak

Struktur folder

Pekerjaan Spark juga lebih luas daripada pekerjaan Pig/Apache Hive. Untuk pekerjaan Spark, Anda dapat memberikan beberapa dependensi seperti paket jar (ditempatkan di java CLASSPATH), file python (ditempatkan di PYTHONPATH), dan file lainnya.

Buat struktur folder berikut dalam penyimpanan Azure Blob yang direferensikan oleh layanan tertaut HDInsight. Kemudian, unggah file dependen ke subfolder yang sesuai di folder akar yang diwakili oleh entryFilePath. Misalnya, unggah file python ke subfolder pyFiles dan file jar ke subfolder jar pada folder akar. Pada runtime, layanan mengharapkan struktur folder berikut dalam penyimpanan Azure Blob:

Jalur Deskripsi Diperlukan Jenis
. (akar) Jalur akar pekerjaan Spark di layanan penyimpanan yang ditautkan Ya Folder
<ditentukan pengguna> Jalur yang menunjuk ke file entri pekerjaan Spark Ya File
./jar Semua file di bawah folder ini diunggah dan ditempatkan pada java classpath dari kluster Tidak Folder
./pyFiles Semua file di bawah folder ini diunggah dan ditempatkan pada PYTHONPATH kluster Tidak Folder
./file Semua file di bawah folder ini diunggah dan ditempatkan pada direktori kerja pelaksana Tidak Folder
./arsip Semua file di bawah folder ini tidak dipadatkan Tidak Folder
./log Folder yang berisi log dari kluster Spark. Tidak Folder

Berikut adalah contoh untuk penyimpanan yang berisi dua file pekerjaan Spark dalam Azure Blob Storage yang dirujuk oleh layanan tertaut HDInsight.

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
    

Langkah berikutnya

Lihat artikel berikut yang menjelaskan cara mentransformasikan data dengan cara lain: