Salin data ke dan dari Data Lake Storage Gen1 dengan menggunakan Data Factory
Catatan
Artikel ini berlaku untuk versi 1 dari Azure Data Factory. Jika Anda menggunakan versi layanan Azure Data Factory saat ini, lihat konektor Azure Data Lake Storage Gen1 di V2.
Artikel ini menjelaskan cara menggunakan Salin Aktivitas di Azure Data Factory untuk memindahkan data ke dan dari Azure Data Lake Storage Gen1 (sebelumnya dikenal sebagai Azure Data Lake Store). Ini dibuat pada artikel Aktivitas pergerakan data, ikhtisar pergerakan data dengan Salin Aktivitas.
Skenario yang didukung
Anda bisa menyalin data dari Azure Data Lake Store ke penyimpanan data berikut ini:
| Kategori | Penyimpanan data |
|---|---|
| Azure | Azure Blob Storage Azure Data Lake Storage Gen1 Azure Cosmos DB (SQL API) Azure SQL Database Azure Synapse Analytics Indeks Azure Cognitive Search Penyimpanan Tabel Azure |
| Database | SQL Server Oracle |
| File | Sistem file |
Anda bisa menyalin data dari penyimpanan data berikut ke Azure Data Lake Store:
Catatan
Buat akun Azure Data Lake Storage sebelum membuat alur dengan Salin Aktivitas. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Data Lake Store.
Jenis autentikasi yang didukung
Konektor Data Lake Store mendukung jenis autentikasi ini:
- Autentikasi utama layanan
- Autentikasi kredensial pengguna (OAuth)
Kami menyarankan agar Anda menggunakan autentikasi utama layanan, terutama untuk salinan data terjadwal. Perilaku kedaluwarsa token dapat terjadi dengan autentikasi kredensial pengguna. Untuk detail konfigurasi, lihat bagian Properti layanan tertaut.
Mulai
Anda dapat membuat alur dengan aktivitas salin yang memindahkan data ke/dari Azure Data Lake Storage dengan menggunakan alat/API yang berbeda.
Cara termudah untuk membuat alur untuk menyalin data adalah dengan menggunakan Wizard Salin. Untuk tutorial tentang membuat alur dengan menggunakan Wizard Salin, lihat Tutorial: Membuat alur menggunakan Wizard Salin.
Anda juga dapat menggunakan alat berikut untuk membuat alur: Visual Studio, Azure PowerShell, template Azure Resource Manager, .NET API, dan REST API. Lihat Tutorial aktivitas penyalinan untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas penyalinan.
Baik Anda menggunakan alat atau API, Anda melakukan langkah-langkah berikut untuk membuat alur yang memindahkan data dari penyimpanan data sumber ke penyimpanan data sink:
- Buat data factory. Data factory mungkin berisi satu atau beberapa alur.
- Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke data factory Anda. Misalnya, jika Anda menyalin data dari penyimpanan Azure blob storage ke Azure Data Lake Storage, Anda membuat dua layanan tertaut untuk menautkan akun Microsoft Azure Storage dan Azure Data Lake Storage ke data factory Anda. Untuk properti layanan tertaut yang khusus untuk Azure Data Lake Store, lihat bagian properti layanan tertaut.
- Buat himpunan data untuk merepresentasikan data input dan output untuk operasi salin. Dalam contoh yang disebutkan di langkah terakhir, Anda membuat himpunan data untuk menentukan kontainer dan folder blob yang berisi input data. Dan, Anda membuat himpunan data lain untuk menentukan folder dan alur file di penyimpanan Data Lake yang menyimpan data yang disalin dari penyimpanan blob. Untuk properti himpunan data yang khusus untuk Azure Data Lake Store, lihat bagian properti himpunan data.
- Buat alur dengan aktivitas salin yang mengambil himpunan data sebagai input dan himpunan data sebagai output. Dalam contoh yang disebutkan sebelumnya, Anda menggunakan BlobSource sebagai sumber dan AzureDataLakeStoreSink sebagai sink untuk aktivitas salinan. Demikian pula, jika Anda menyalin dari Azure Data Lake Store ke Azure Blob Storage, Anda menggunakan AzureDataLakeStoreSource dan BlobSink dalam aktivitas salinan. Untuk properti aktivitas salin yang khusus untuk Azure Data Lake Store, lihat bagian menyalin properti aktivitas. Untuk detail tentang cara menggunakan penyimpanan data sebagai sumber atau sink, klik tautan di bagian sebelumnya untuk penyimpanan data Anda.
Saat Anda menggunakan wizard, definisi JSON untuk entitas Data Factory ini (layanan tertaut, himpunan data, dan alur) secara otomatis dibuat untuk Anda. Saat Anda menggunakan alat/API (kecuali .NET API), Anda menentukan entitas Data Factory ini dengan menggunakan format JSON. Untuk contoh dengan definisi JSON untuk entitas Data Factory yang digunakan untuk menyalin data ke/dari Azure Data Lake Storage, lihat bagian Contoh JSON dari artikel ini.
Bagian berikut memberikan detail tentang properti JSON yang digunakan untuk menentukan entitas Pabrik Data khusus untuk Data Lake Storage.
Properti layanan tertaut
Layanan tertaut menghubungkan penyimpanan data ke data factory. Anda membuat layanan tertaut jenis AzureDataLakeStore untuk menautkan Data Lake Store Anda ke data factory Anda. Tabel berikut ini menjelaskan elemen JSON khusus untuk layanan tertaut Data Lake Store. Anda dapat memilih antara prinsipal layanan dan autentikasi kredensial pengguna.
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| jenis | Properti jenis harus diatur ke AzureDataLakeStore. | Ya |
| dataLakeStoreUri | Informasi tentang akun Azure Data Lake Storage. Informasi ini menggunakan salah satu format berikut: https://[accountname].azuredatalakestore.net/webhdfs/v1 atau adl://[accountname].azuredatalakestore.net/. |
Ya |
| subscriptionId | ID langganan Azure tempat akun Data Lake Storage berada. | Diperlukan untuk sink |
| resourceGroupName | Nama grup sumber daya Azure tempat akun Data Lake Storage berada. | Diperlukan untuk sink |
Autentikasi utama layanan (disarankan)
Untuk menggunakan autentikasi perwakilan layanan, daftarkan entitas aplikasi di Azure Active Directory (Azure AD) dan berikan akses ke Data Lake Store. Untuk langkah-langkah mendetail, lihat Autentikasi layanan ke layanan. Catat nilai berikut, yang Anda gunakan untuk menentukan layanan tertaut:
- ID aplikasi
- Kunci aplikasi
- ID Penyewa
Penting
Pastikan Anda memberikan izin yang tepat kepada perwakilan di Azure Data Lake Store:
- Untuk menggunakan Azure Data Lake Storage sebagai sumber, berikan setidaknya izin Baca + Eksekusi akses data untuk mencantumkan dan menyalin konten folder, atau Izin Baca untuk menyalin satu file. Tidak ada persyaratan tentang kontrol akses tingkat akun.
- Untuk menggunakan Data Lake Store sebagai sink, berikan setidaknya izin akses data Write + Execute untuk membuat item anak di folder. Dan jika Anda menggunakan Azure IR untuk mengaktifkan salinan (sumber dan sink ada di cloud), agar Data Factory dapat mendeteksi wilayah Data Lake Store, berikan setidaknya peran Pembaca dalam kontrol akses akun (IAM). Jika Anda ingin menghindari peran IAM ini, tentukan executionLocation dengan lokasi Data Lake Store Anda dalam aktivitas salin.
- Jika Anda menggunakan Wizard Salin untuk menulis alur, berikan setidaknya peran Pembaca dalam kontrol akses akun (IAM). Selain itu, berikan setidaknya izin Baca + Eksekusi ke akar Data Lake Store Anda ("/") dan anak-anaknya. Jika tidak, Anda mungkin melihat pesan "Kredensial yang disediakan tidak valid."
Gunakan autentikasi utama layanan dengan menentukan properti berikut:
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| servicePrincipalId | Tentukan ID klien aplikasi. | Ya |
| servicePrincipalKey | Tentukan kunci aplikasi. | Ya |
| penyewa | Tentukan informasi penyewa (nama domain atau ID penyewa) tempat aplikasi Anda berada. Anda dapat mengambilnya dengan mengarahkan mouse ke sudut kanan atas portal Microsoft Azure. | Ya |
Contoh: Autentikasi perwakilan layanan
{
"name": "AzureDataLakeStoreLinkedService",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": "<service principal key>",
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
"subscriptionId": "<subscription of ADLS>",
"resourceGroupName": "<resource group of ADLS>"
}
}
}
Autentikasi kredensial pengguna
Atau, Anda dapat menggunakan autentikasi kredensial pengguna untuk menyalin dari atau ke Data Lake Store dengan menentukan properti berikut:
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| otorisasi | Klik tombol Otorisasi di Editor Data Factory dan masukkan kredensial Anda yang menetapkan URL otorisasi yang dihasilkan secara otomatis ke properti ini. | Ya |
| sessionId | ID sesi OAuth dari sesi otorisasi OAuth. Setiap ID sesi unik dan hanya dapat digunakan sekali. Pengaturan ini dihasilkan secara otomatis saat Anda menggunakan Editor Data Factory. | Ya |
Penting
Pastikan Anda memberikan izin yang tepat kepada pengguna di Azure Data Lake Store:
- Untuk menggunakan Azure Data Lake Storage sebagai sumber, berikan setidaknya izin Baca + Eksekusi akses data untuk mencantumkan dan menyalin konten folder, atau Izin Baca untuk menyalin satu file. Tidak ada persyaratan tentang kontrol akses tingkat akun.
- Untuk menggunakan Data Lake Store sebagai sink, berikan setidaknya izin akses data Write + Execute untuk membuat item anak di folder. Dan jika Anda menggunakan Azure IR untuk mengaktifkan salinan (sumber dan sink ada di cloud), agar Data Factory dapat mendeteksi wilayah Data Lake Store, berikan setidaknya peran Pembaca dalam kontrol akses akun (IAM). Jika Anda ingin menghindari peran IAM ini, tentukan executionLocation dengan lokasi Data Lake Store Anda dalam aktivitas salin.
- Jika Anda menggunakan Wizard Salin untuk menulis alur, berikan setidaknya peran Pembaca dalam kontrol akses akun (IAM). Selain itu, berikan setidaknya izin Baca + Eksekusi ke akar Data Lake Store Anda ("/") dan anak-anaknya. Jika tidak, Anda mungkin melihat pesan "Kredensial yang disediakan tidak valid."
Contoh: Autentikasi kredensial pengguna
{
"name": "AzureDataLakeStoreLinkedService",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
"sessionId": "<session ID>",
"authorization": "<authorization URL>",
"subscriptionId": "<subscription of ADLS>",
"resourceGroupName": "<resource group of ADLS>"
}
}
}
Kedaluwarsa token
Kode otorisasi yang Anda hasilkan dengan menggunakan tombol Otorisasi kedaluwarsa setelah beberapa waktu. Pesan berikut ini berarti bahwa token autentikasi telah kedaluwarsa:
Kesalahan operasi kredensial: invalid_grant - AADSTS70002: Kesalahan memvalidasi kredensial. AADSTS70008: Hibah akses yang disediakan kedaluwarsa atau dicabut. ID Jejak: d18629e8-af88-43c5-88e3-d8419eb1fca1 ID Korelasi: fac30a0c-6be6-4e02-8d69-a776d2ffefd7 Stempel waktu: 2015-12-15 21-09-31Z.
Tabel berikut ini memperlihatkan waktu kedaluwarsa dari berbagai jenis akun pengguna:
| Tipe pengguna | Kedaluwarsa setelah |
|---|---|
| Akun pengguna tidak dikelola oleh Azure Active Directory (misalnya, @hotmail.com atau @live.com) | 12 jam |
| Akun pengguna yang dikelola oleh Azure Active Directory | 14 hari setelah irisan terakhir berjalan 90 hari, jika irisan berdasarkan layanan tertaut berbasis OAuth berjalan setidaknya sekali setiap 14 hari |
Jika Anda mengubah kata sandi sebelum waktu kedaluwarsa token, token akan segera kedaluwarsa. Anda akan melihat pesan yang disebutkan sebelumnya di bagian ini.
Anda dapat mengotorisasi ulang akun dengan menggunakan tombol Otorisasi saat token kedaluwarsa untuk menebus layanan yang ditautkan. Anda juga dapat menghasilkan nilai untuk properti sessionId dan otorisasi secara terprogram dengan menggunakan kode berikut:
if (linkedService.Properties.TypeProperties is AzureDataLakeStoreLinkedService ||
linkedService.Properties.TypeProperties is AzureDataLakeAnalyticsLinkedService)
{
AuthorizationSessionGetResponse authorizationSession = this.Client.OAuth.Get(this.ResourceGroupName, this.DataFactoryName, linkedService.Properties.Type);
WindowsFormsWebAuthenticationDialog authenticationDialog = new WindowsFormsWebAuthenticationDialog(null);
string authorization = authenticationDialog.AuthenticateAAD(authorizationSession.AuthorizationSession.Endpoint, new Uri("urn:ietf:wg:oauth:2.0:oob"));
AzureDataLakeStoreLinkedService azureDataLakeStoreProperties = linkedService.Properties.TypeProperties as AzureDataLakeStoreLinkedService;
if (azureDataLakeStoreProperties != null)
{
azureDataLakeStoreProperties.SessionId = authorizationSession.AuthorizationSession.SessionId;
azureDataLakeStoreProperties.Authorization = authorization;
}
AzureDataLakeAnalyticsLinkedService azureDataLakeAnalyticsProperties = linkedService.Properties.TypeProperties as AzureDataLakeAnalyticsLinkedService;
if (azureDataLakeAnalyticsProperties != null)
{
azureDataLakeAnalyticsProperties.SessionId = authorizationSession.AuthorizationSession.SessionId;
azureDataLakeAnalyticsProperties.Authorization = authorization;
}
}
Untuk detail tentang kelas Data Factory yang digunakan dalam kode, lihat topik AzureDataLakeStoreLinkedService Class, AzureDataLakeAnalyticsLinkedService Class, dan AuthorizationSessionGetResponse Class. Tambahkan referensi ke versi 2.9.10826.1824 dari Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll untuk kelas WindowsFormsWebAuthenticationDialog yang digunakan dalam kode.
Tips Pemecahan Masalah
Gejala: Saat menyalin data ke Azure Data Lake Store, jika aktivitas salin Anda gagal dengan kesalahan berikut:
Failed to detect the region for Azure Data Lake account {your account name}. Please make sure that the Resource Group name: {resource group name} and subscription ID: {subscription ID} of this Azure Data Lake Store resource are correct.
Akar penyebab: Ada 2 kemungkinan alasan:
resourceGroupNamedan/atausubscriptionIdyang ditentukan dalam layanan tertaut Azure Data Lake Store salah;- Pengguna atau perwakilan tidak memiliki izin yang diperlukan.
Resolusi:
Pastikan
subscriptionIddanresourceGroupNameyang Anda tentukan di layanan tertauttypePropertiesmemang milik akun data lake Anda.Berikan, setidaknya, peran Pembaca kepada pengguna atau perwakilan layanan di akun data lake.
Untuk langkah yang lebih detail, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.
Jika Anda tidak ingin memberikan peran Pembaca kepada pengguna atau perwakilan layanan, alternatifnya adalah menentukan lokasi eksekusi secara eksplisit dalam aktivitas salinan dengan lokasi Data Lake Store Anda. Contoh:
{ "name": "CopyToADLS", "type": "Copy", ...... "typeProperties": { "source": { "type": "<source type>" }, "sink": { "type": "AzureDataLakeStoreSink" }, "exeuctionLocation": "West US" } }
Properti himpunan data
Untuk menentukan himpunan data untuk mewakili data input di Azure Data Lake Storage, Anda mengatur properti jenis himpunan data ke AzureDataLakeStore. Atur properti linkedServiceName dari himpunan data ke nama layanan tertaut Data Lake Store. Untuk daftar lengkap bagian & properti JSON yang tersedia untuk menentukan himpunan data, lihat artikel Membuat himpunan data. Bagian dari himpunan data di JSON, seperti struktur, ketersediaan, dan kebijakan, mirip untuk semua jenis himpunan data (database Azure SQL,blob Azure, dan tabel Azure, misalnya). Bagian typeProperties berbeda untuk setiap jenis himpunan data dan memberikan informasi seperti lokasi dan format data di penyimpanan data.
Bagian typeProperties untuk himpunan datajenis AzureDataLakeStore berisi properti berikut ini:
| Properti | Deskripsi | Diperlukan |
|---|---|---|
| folderPath | Jalur ke kontainer dan folder di Azure Data Lake Storage. | Ya |
| fileName | Nama file di Azure Data Lake Storage. Properti fileName bersifat opsional dan peka huruf besar/kecil. Jika Anda menentukan fileName, aktivitas (termasuk Salin) berfungsi pada file tertentu. Ketika fileName tidak ditentukan, Salin menyertakan semua file di folderPath dalam himpunan data input. Ketika fileName tidak ditentukan untuk himpunan data output dan preserveHierarchy tidak ditentukan dalam sink aktivitas, nama file yang dihasilkan dalam format Data._Guid_.txt. Misalnya: Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt. |
Tidak |
| partitionedBy | Properti partitionedBy bersifat opsional. Anda dapat menggunakannya untuk menentukan alur dinamis dan nama file untuk data seri waktu. Misalnya, folderPath dapat di parameter untuk setiap jam data. Untuk detail dan contoh, lihat properti partitionedBy. | Tidak |
| format | Jenis format berikut didukung: TextFormat, JsonFormat, AvroFormat, OrcFormat, dan ParquetFormat. Atur properti jenis berdasarkan format ke salah satu nilai ini. Untuk informasi selengkapnya, lihat bagian Format teks, format JSON, format Avro,format ORC, dan Format Parquet di File dan format kompresi yang didukung oleh artikel Azure Data Factory. Jika Anda ingin menyalin file "apa adanya" di antara penyimpanan berbasis file (salinan biner), lewati format bagian dalam definisi himpunan data input dan output. |
Tidak |
| kompresi | Menentukan jenis dan tingkat kompresi untuk data. Jenis yang didukung adalah: GZip, Deflate, BZip2, dan ZipDeflate. Level yang didukung adalah: Optimal dan Tercepat. Untuk informasi selengkapnya, lihat File dan format kompresi yang didukung oleh Azure Data Factory. | Tidak |
Properti partitionedBy
Anda dapat menentukan properti folderPath dan fileName dinamis untuk data deret waktu dengan properti partitionedBy, fungsi Data Factory, dan variabel sistem. Untuk detailnya, lihat artikel Azure Data Factory - fungsi dan variabel sistem.
Dalam contoh berikut{Slice}, diganti dengan nilai variabel sistem Data Factory SliceStart dalam format yang ditentukan (yyyyMMddHH). Nama SliceStart mengacu pada waktu mulai irisan. Properti folderPath ini berbeda untuk setiap irisan, seperti dalam wikidatagateway/wikisampledataout/2014100103 atau wikidatagateway/wikisampledataout/2014100104.
"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
{ "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],
Dalam contoh berikut, tahun, bulan, hari, dan waktu SliceStart diekstraksi ke dalam variabel terpisah yang digunakan oleh folderPath dan fileName properti:
"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
[
{ "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
{ "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
{ "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
{ "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],
Untuk detail selengkapnya tentang himpunan data, penjadwalan, dan irisan seri waktu, lihat artikel penjadwalan dan eksekusi Himpunan data di Azure Data Factory dan Azure Data Factory.
Properti aktivitas salin
Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, tabel input dan output, dan kebijakan tersedia untuk semua jenis aktivitas.
Properti yang tersedia di bagian typeProperties dari aktivitas akan berbeda-beda untuk setiap jenis aktivitas. Untuk aktivitas salin, ini bervariasi sesuai dengan jenis sumber dan sink.
AzureDataLakeStoreSource mendukung bagian properti typeProperties berikut:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| berulang | Menunjukkan apakah data dibaca secara berulang dari subfolder atau hanya dari folder yang ditentukan. | Benar (nilai default), Salah | Tidak |
AzureDataLakeStoreSink mendukung bagian properti typeProperties berikut:
| Properti | Deskripsi | Nilai yang diizinkan | Diperlukan |
|---|---|---|---|
| copyBehavior | Menentukan perilaku salin. | PreserveHierarchy: mempertahankan hierarki file di folder target. Alur relatif file sumber ke folder sumber identik dengan alur relatif file target ke folder target. FlattenHierarchy: Semua file dari folder sumber berada di tingkat pertama folder target. File target dibuat dengan nama yang dihasilkan secara otomatis. MergeFiles: menggabungkan semua file dari folder sumber ke satu file. Jika nama file atau blob ditentukan, nama file yang digabungkan adalah nama yang ditentukan. Jika tidak, nama file akan dihasilkan secara otomatis. |
Tidak |
contoh berulang dan copyBehavior
Bagian ini menjelaskan perilaku yang dihasilkan dari operasi Salin untuk kombinasi yang berbeda dari nilai berulang dan copyBehavior.
| rekursif | copyBehavior | Perilaku yang dihasilkan |
|---|---|---|
| TRUE | preserveHierarchy | Untuk folder sumber Folder1 dengan struktur berikut: Folder1 File1 File2 Subfolder1 File3 File4 File5 folder target Folder1 dibuat dengan struktur yang sama dengan sumber Folder1 File1 File2 Subfolder1 File3 File4 File5. |
| TRUE | flattenHierarchy | Untuk folder sumber Folder1 dengan struktur berikut: Folder1 File1 File2 Subfolder1 File3 File4 File5 Folder target Folder1 dibuat dengan struktur berikut: Folder1 nama yang dihasilkan secara otomatis untuk File1 nama yang dibuat secara otomatis untuk File2 nama yang dibuat secara otomatis untuk File3 nama yang dibuat secara otomatis untuk File4 nama yang dibuat secara otomatis untuk File5 |
| TRUE | mergeFiles | Untuk folder sumber Folder1 dengan struktur berikut: Folder1 File1 File2 Subfolder1 File3 File4 File5 Folder target Folder1 dibuat dengan struktur berikut: Folder1 Konten File1 + File2 + File3 + File4 + File 5 digabungkan menjadi satu file dengan nama file yang dibuat secara otomatis |
| salah | preserveHierarchy | Untuk folder sumber Folder1 dengan struktur berikut: Folder1 File1 File2 Subfolder1 File3 File4 File5 Folder target Folder1 dibuat dengan struktur berikut Folder1 File1 File2 Subfolder1 dengan File3, File4, dan File5 tidak diambil. |
| false | flattenHierarchy | Untuk folder sumber Folder1 dengan struktur berikut: Folder1 File1 File2 Subfolder1 File3 File4 File5 Folder target Folder1 dibuat dengan struktur berikut Folder1 nama yang dihasilkan secara otomatis untuk File1 nama yang dibuat secara otomatis untuk File2 Subfolder1 dengan File3, File4, dan File5 tidak diambil. |
| false | mergeFiles | Untuk folder sumber Folder1 dengan struktur berikut: Folder1 File1 File2 Subfolder1 File3 File4 File5 Folder target Folder1 dibuat dengan struktur berikut Folder1 konten File1 + File2 digabungkan ke dalam satu file, dengan nama file yang dihasilkan secara otomatis. nama yang dihasilkan secara otomatis untuk File1 Subfolder1 dengan File3, File4, dan File5 tidak diambil. |
File yang didukung dan format kompresi
Untuk detail selengkapnya, lihat artikel File dan format kompresi di Azure Data Factory.
Contoh JSON untuk menyalin data ke dan dari Azure Data Lake Store
Contoh berikut menyediakan contoh definisi JSON. Anda bisa menggunakan contoh definisi ini untuk membuat alur dengan menggunakan Visual Studio atau Azure PowerShell. Contoh menunjukkan cara menyalin data ke dan dari Penyimpanan Data Lake Store dan Azure Blob Storage. Namun, data dapat disalin langsung dari salah satu sumber ke salah satu sink yang didukung. Untuk informasi selengkapnya, lihat bagian "Penyimpanan dan format data yang didukung" di Memindahkan data dengan menggunakan Salin Aktivitas.
Contoh: Menyalin data dari Azure Blob Storage ke Azure Data Lake Store
Contoh kode di bagian ini menunjukkan:
- Layanan tertaut jenis AzureStorage.
- Layanan tertaut jenis AzureDataLakeStore.
- Sebuah input himpunan data jenis AzureBlob.
- Sebuah output himpunan data jenis AzureDataLakeStore.
- Alur dengan aktivitas salinan yang menggunakan BlobSource dan AzureDataLakeStoreSink.
Contoh menunjukkan bagaimana data seri waktu dari Azure Blob Storage disalin ke Data Lake Store setiap jam.
Layanan tertaut Microsoft Azure Storage
{
"name": "StorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
Layanan tertaut Microsoft Azure Data Lake Store
{
"name": "AzureDataLakeStoreLinkedService",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": "<service principal key>",
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
"subscriptionId": "<subscription of ADLS>",
"resourceGroupName": "<resource group of ADLS>"
}
}
}
Catatan
Untuk detail konfigurasi, lihat bagian Properti layanan tertaut.
himpunan data input Azure Blob
Dalam contoh berikut, data diambil dari blob baru setiap jam ("frequency": "Hour", "interval": 1). Jalur folder dan nama file untuk blob dievaluasi secara dinamis berdasarkan waktu mulai yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, dan bagian hari waktu mulai. Nama file menggunakan bagian jam dari waktu mulai. Pengaturan "external": true menginformasikan layanan Azure Data Factory bahwa himpunan data berada di luar Data Factory dan tidak diproduksi oleh aktivitas di Data Factory.
{
"name": "AzureBlobInput",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "StorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}",
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "MM"
}
},
{
"name": "Day",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "dd"
}
},
{
"name": "Hour",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "HH"
}
}
]
},
"external": true,
"availability": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
himpunan data output Azure Data Lake Store
Contoh berikut menyalin data ke Data Lake Store. Data baru disalin ke Data Lake Store setiap jam.
{
"name": "AzureDataLakeStoreOutput",
"properties": {
"type": "AzureDataLakeStore",
"linkedServiceName": "AzureDataLakeStoreLinkedService",
"typeProperties": {
"folderPath": "datalake/output/"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
Aktivitas salin dalam alur dengan sumber blob dan sink Data Lake Store
Dalam contoh berikut, alur berisi aktivitas salin yang dikonfigurasi untuk menggunakan himpunan data input dan output. Aktivitas salin dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, source jenis diatur ke BlobSource, dan sink jenis diatur ke AzureDataLakeStoreSink.
{
"name":"SamplePipeline",
"properties":
{
"start":"2014-06-01T18:00:00",
"end":"2014-06-01T19:00:00",
"description":"pipeline with copy activity",
"activities":
[
{
"name": "AzureBlobtoDataLake",
"description": "Copy Activity",
"type": "Copy",
"inputs": [
{
"name": "AzureBlobInput"
}
],
"outputs": [
{
"name": "AzureDataLakeStoreOutput"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "AzureDataLakeStoreSink"
}
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"concurrency": 1,
"executionPriorityOrder": "OldestFirst",
"retry": 0,
"timeout": "01:00:00"
}
}
]
}
}
Contoh: Menyalin data dari Azure Data Lake Store ke Azure blob
Contoh kode di bagian ini menunjukkan:
- Layanan tertaut jenis AzureDataLakeStore.
- Layanan tertaut jenis AzureStorage.
- Sebuah inputhimpunan data jenis AzureDataLakeStore.
- Sebuah output himpunan data jenis AzureBlob.
- Sebuah alur dengan aktivitas salin yang menggunakan AzureDataLakeStoreSource dan BlobSink.
Kode menyalin data seri waktu dari Data Lake Store ke Azure blob setiap jam.
Layanan tertaut Microsoft Azure Data Lake Store
{
"name": "AzureDataLakeStoreLinkedService",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": "<service principal key>",
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
}
}
}
Catatan
Untuk detail konfigurasi, lihat bagian Properti layanan tertaut.
Layanan tertaut Microsoft Azure Storage
{
"name": "StorageLinkedService",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
}
}
}
himpunan data input Azure Data Lake
Dalam contoh ini, mengatur "external" ke true menginformasikan layanan Azure Data Factory bahwa tabel berada di luar data factory dan tidak dihasilkan oleh aktivitas di data factory.
{
"name": "AzureDataLakeStoreInput",
"properties":
{
"type": "AzureDataLakeStore",
"linkedServiceName": "AzureDataLakeStoreLinkedService",
"typeProperties": {
"folderPath": "datalake/input/",
"fileName": "SearchLog.tsv",
"format": {
"type": "TextFormat",
"rowDelimiter": "\n",
"columnDelimiter": "\t"
}
},
"external": true,
"availability": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"externalData": {
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}
Himpunan data output Azure blob
Dalam contoh berikut, data ditulis dari blob baru setiap jam ("frequency": "Hour", "interval": 1). Jalur folder untuk blob dievaluasi secara dinamis berdasarkan waktu mulai irisan yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, hari, dan jam dari waktu mulai.
{
"name": "AzureBlobOutput",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "StorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "MM"
}
},
{
"name": "Day",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "dd"
}
},
{
"name": "Hour",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "HH"
}
}
],
"format": {
"type": "TextFormat",
"columnDelimiter": "\t",
"rowDelimiter": "\n"
}
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
Aktivitas salin dalam alur dengan sumber blob dan sink Azure Data Lake Store
Dalam contoh berikut, alur berisi aktivitas salin yang dikonfigurasi untuk menggunakan himpunan data input dan output. Aktivitas salin dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, source jenis diatur ke AzureDataLakeStoreSource, dan sink jenis diatur ke BlobSink.
{
"name":"SamplePipeline",
"properties":{
"start":"2014-06-01T18:00:00",
"end":"2014-06-01T19:00:00",
"description":"pipeline for copy activity",
"activities":[
{
"name": "AzureDakeLaketoBlob",
"description": "copy activity",
"type": "Copy",
"inputs": [
{
"name": "AzureDataLakeStoreInput"
}
],
"outputs": [
{
"name": "AzureBlobOutput"
}
],
"typeProperties": {
"source": {
"type": "AzureDataLakeStoreSource",
},
"sink": {
"type": "BlobSink"
}
},
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"policy": {
"concurrency": 1,
"executionPriorityOrder": "OldestFirst",
"retry": 0,
"timeout": "01:00:00"
}
}
]
}
}
Di dalam definisi aktivitas salin, Anda juga dapat memetakan kolom dari himpunan data sumber ke kolom dari himpunan data sink. Untuk detailnya, lihat Memetakan kolom himpunan data di Azure Data Factory.
Kinerja dan penyetelan
Untuk mempelajari tentang faktor-faktor yang memengaruhi kinerja Salin Aktivitas dan cara mengoptimalkannya, lihat artikel panduan kinerja dan penyetelan Salin Aktivitas.