Format file dan codec kompresi yang didukung di Azure Data Factory dan Synapse Analytics (warisan)
BERLAKU UNTUK: Azure Data Factory Azure Synapse Analytics
Tip
Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!
Artikel ini berlaku untuk konektor berikut: Amazon S3, Azure Blob, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure Files, Sistem File, FTP, Google Cloud Storage, HDFS, HTTP, dan SFTP.
Penting
Layanan ini memperkenalkan model himpunan data berbasis format baru, lihat artikel format terkait dengan detail:
- Format Avro
- Format Biner
- Format teks terpisah
- Format JSON
- Format ORC
- Format Parquet
Konfigurasi lainnya yang disebutkan dalam artikel ini masih didukung sebagaimana adanya untuk kompabitilitas mundur. Anda disarankan untuk menggunakan model baru di masa mendatang.
Format teks (warisan)
Catatan
Pelajari model baru dari artikel Format teks dibatasi. Konfigurasi berikut pada himpunan data penyimpanan data berbasis file masih didukung apa adanya untuk kompabitilitas mundur. Anda disarankan untuk menggunakan model baru di masa mendatang.
Jika Anda ingin membaca dari file teks atau menulis ke file teks, atur type
properti di format
bagian dari himpunan data ke TextFormat. Anda juga dapat menentukan properti opsional berikut di bagian format
tersebut. Lihat bagian Contoh TextFormat tentang cara mengonfigurasikan.
Properti | Deskripsi | Nilai yang diizinkan | Wajib |
---|---|---|---|
columnDelimiter | Karakter yang digunakan untuk memisahkan kolom dalam sebuah file. Anda dapat mempertimbangkan untuk menggunakan karakter langka yang tidak dapat dicetak yang mungkin tidak ada dalam data Anda. Misalnya, tentukan "\u0001", yang mewakili Start of Heading (SOH). | Hanya satu karakter yang diizinkan. Nilai default-nya adalah koma (','). Untuk menggunakan karakter Unicode, lihat Karakter Unicode untuk mendapatkan kode yang sesuai. |
No |
rowDelimiter | Karakter yang digunakan untuk memisahkan baris dalam sebuah file. | Hanya satu karakter yang diizinkan. Nilai default-nya adalah salah satu dari nilai berikut pada baca: ["\r\n", "\r", "\n"] dan "\r\n" pada tulis. | No |
escapeChar | Karakter khusus yang digunakan untuk keluar dari pemisah kolom dalam konten file input. Anda tidak dapat menentukan escapeChar dan quoteChar untuk tabel. |
Hanya satu karakter yang diizinkan. Tidak ada nilai default. Contoh: jika Anda memiliki koma (',') sebagai pemisah kolom, tetapi Anda ingin memiliki karakter koma dalam teks (contoh: "Halo, dunia"), Anda dapat menentukan '$' sebagai karakter escape dan menggunakan string "Hello$, world" di sumbernya. |
No |
quoteChar | Karakter yang digunakan untuk mengutip nilai untai (karakter). Pemisah kolom dan baris di dalam karakter kutipan akan diperlakukan sebagai bagian dari nilai untai (karakter). Properti ini berlaku untuk himpunan data input dan output. Anda tidak dapat menentukan escapeChar dan quoteChar untuk tabel. |
Hanya satu karakter yang diizinkan. Tidak ada nilai default. Misalnya, jika Anda memiliki koma (',') sebagai pembatas kolom tetapi Anda ingin memiliki karakter koma dalam teks (contoh: <Halo, dunia>), Anda dapat mendefinisikan " (tanda kutip ganda) sebagai karakter kutip dan gunakan string "Halo, dunia" di sumbernya. |
No |
nullValue | Satu atau beberapa karakter yang digunakan untuk mewakili nilai null. | Satu atau beberapa karakter. Nilai default adalah "\N" dan "NULL" pada baca dan "\N" pada tulis. | No |
encodingName | Tentukan nama pengodean. | Nama pengodean yang valid. lihat Properti Encoding.EncodingName. Contoh: windows-1250 atau shift_jis. Nilai default-nya adalah UTF-8. | No |
firstRowAsHeader | Menentukan apakah akan mempertimbangkan baris pertama sebagai header. Untuk himpunan data input, layanan akan membaca baris pertama sebagai header. Untuk himpunan data output, layanan akan menulis baris pertama sebagai header. Lihat Skenario penggunaan firstRowAsHeader dan skipLineCount untuk skenario sampel. |
Benar False (default) |
No |
skipLineCount | Menunjukkan jumlah baris yang tidak kosong untuk dilewati saat membaca data dari file input. Jika skipLineCount dan firstRowAsHeader ditentukan, baris tersebut akan dilewati terlebih dahulu dan kemudian informasi header dibaca dari file input. Lihat Skenario penggunaan firstRowAsHeader dan skipLineCount untuk skenario sampel. |
Bilangan bulat | No |
treatEmptyAsNull | Menentukan apakah akan memperlakukan string null atau kosong sebagai nilai null saat membaca data dari file input. | True (default) Salah |
No |
Contoh TextFormat
Dalam definisi JSON berikut untuk himpunan data, beberapa properti opsional ditentukan.
"typeProperties":
{
"folderPath": "mycontainer/myfolder",
"fileName": "myblobname",
"format":
{
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": ";",
"quoteChar": "\"",
"NullValue": "NaN",
"firstRowAsHeader": true,
"skipLineCount": 0,
"treatEmptyAsNull": true
}
},
Untuk menggunakan escapeChar
alih-alih quoteChar
, ganti baris dengan quoteChar
escapeChar berikut:
"escapeChar": "$",
Skenario untuk menggunakan firstRowAsHeader dan skipLineCount
- Anda akan menyalin dari sumber non-file ke file teks dan ingin menambahkan baris header yang berisi metadata skema (misalnya: skema SQL). Tentukan
firstRowAsHeader
sebagai true dalam himpunan data output untuk skenario ini. - Anda akan menyalin dari file teks yang berisi baris header ke sink non-file dan ingin menghilangkan baris tersebut. Tentukan
firstRowAsHeader
sebagai true dalam himpunan data input. - Anda akan menyalin dari file teks dan ingin melompati beberapa baris di awal yang tidak berisi data atau informasi header. Tentukan
skipLineCount
untuk menunjukkan jumlah baris yang akan dilompati. Jika sisa file berisi baris header, Anda juga dapat menentukanfirstRowAsHeader
. JikaskipLineCount
danfirstRowAsHeader
ditentukan, baris tersebut akan dilewati terlebih dahulu dan kemudian informasi header dibaca dari file input
Format JSON (warisan)
Catatan
Pelajari model baru dari artikel format JSON. Konfigurasi berikut pada himpunan data penyimpanan data berbasis file masih didukung apa adanya untuk kompabitilitas mundur. Anda disarankan untuk menggunakan model baru di masa mendatang.
Untuk mengimpor/mengekspor file JSON sebagaimana adanya ke/dari Microsoft Azure Cosmos DB, lihat bagian Impor/ekspor dokumen JSON di artikel Memindahkan data ke/dari Microsoft Azure Cosmos DB.
Jika Anda ingin mengurai file JSON atau menulis data dalam format JSON, atur properti type
di bagian format
ke JsonFormat. Anda juga dapat menentukan properti opsional berikut di bagian format
tersebut. Lihat bagian Contoh JsonFormat tentang cara mengonfigurasikan.
Properti | Deskripsi | Wajib diisi |
---|---|---|
filePattern | Tunjukkan pola data yang disimpan di setiap file JSON. Nilai yang diizinkan adalah: setOfObjects dan arrayOfObjects. Nilai default-nya adalah setOfObjects. Lihat bagian Pola file JSON untuk detail tentang pola ini. | No |
jsonNodeReference | Jika Anda ingin mengulang dan mengekstrak data dari objek di dalam bidang larik dengan pola yang sama, tentukan jalur JSON dari larik tersebut. Properti ini hanya didukung saat menyalin data dari file JSON. | No |
jsonPathDefinition | Tentukan ekspresi jalur JSON untuk setiap pemetaan kolom dengan nama kolom yang disesuaikan (dimulai dengan huruf kecil). Properti ini hanya didukung saat menyalin data dari file JSON dan Anda dapat mengekstrak data dari objek atau larik. Untuk bidang di bawah objek root, mulailah dengan root $; untuk bidang di dalam larik yang dipilih oleh properti jsonNodeReference , mulai dari elemen larik. Lihat bagian Contoh JsonFormat tentang cara mengonfigurasikan. |
No |
encodingName | Tentukan nama pengodean. Untuk daftar nama pengodean yang valid, lihat: Properti Encoding.EncodingName. Contohnya: windows-1250 atau shift_jis. Nilai default-nya adalah: UTF-8. | No |
nestingSeparator | Karakter yang digunakan untuk memisahkan tingkat bersarang. Nilai defaultnya adalah '.' (titik). | No |
Catatan
Untuk kasus penerapan silang data dalam array menjadi beberapa baris (kasus 1 -> contoh 2 dalam contoh JsonFormat), Anda hanya dapat memilih untuk memperluas array tunggal menggunakan properti jsonNodeReference
.
Pola file JSON
Aktivitas salin dapat memilah pola file JSON berikut:
Jenis I: setOfObjects
Setiap file berisi objek tunggal, atau beberapa objek yang dipisahkan baris/digabungkan. Jika opsi ini dipilih dalam himpunan data output, aktivitas salin akan menghasilkan satu file JSON dengan setiap objek per baris (dipisahkan baris).
contoh JSON objek tunggal
{ "time": "2015-04-29T07:12:20.9100000Z", "callingimsi": "466920403025604", "callingnum1": "678948008", "callingnum2": "567834760", "switch1": "China", "switch2": "Germany" }
contoh JSON yang dipisahkan baris
{"time":"2015-04-29T07:12:20.9100000Z","callingimsi":"466920403025604","callingnum1":"678948008","callingnum2":"567834760","switch1":"China","switch2":"Germany"} {"time":"2015-04-29T07:13:21.0220000Z","callingimsi":"466922202613463","callingnum1":"123436380","callingnum2":"789037573","switch1":"US","switch2":"UK"} {"time":"2015-04-29T07:13:21.4370000Z","callingimsi":"466923101048691","callingnum1":"678901578","callingnum2":"345626404","switch1":"Germany","switch2":"UK"}
contoh JSON yang digabungkan
{ "time": "2015-04-29T07:12:20.9100000Z", "callingimsi": "466920403025604", "callingnum1": "678948008", "callingnum2": "567834760", "switch1": "China", "switch2": "Germany" } { "time": "2015-04-29T07:13:21.0220000Z", "callingimsi": "466922202613463", "callingnum1": "123436380", "callingnum2": "789037573", "switch1": "US", "switch2": "UK" } { "time": "2015-04-29T07:13:21.4370000Z", "callingimsi": "466923101048691", "callingnum1": "678901578", "callingnum2": "345626404", "switch1": "Germany", "switch2": "UK" }
Jenis II: arrayOfObjects
Setiap file berisi array objek.
[ { "time": "2015-04-29T07:12:20.9100000Z", "callingimsi": "466920403025604", "callingnum1": "678948008", "callingnum2": "567834760", "switch1": "China", "switch2": "Germany" }, { "time": "2015-04-29T07:13:21.0220000Z", "callingimsi": "466922202613463", "callingnum1": "123436380", "callingnum2": "789037573", "switch1": "US", "switch2": "UK" }, { "time": "2015-04-29T07:13:21.4370000Z", "callingimsi": "466923101048691", "callingnum1": "678901578", "callingnum2": "345626404", "switch1": "Germany", "switch2": "UK" } ]
Contoh JsonFormat
Kasus 1: Menyalin data dari file JSON
Contoh 1: mengekstrak data dari objek dan larik
Dalam sampel ini, Anda ingin satu objek JSON akar dipetakan ke satu baris dalam hasil tabel. Jika Anda memiliki file JSON dengan konten berikut:
{
"id": "ed0e4960-d9c5-11e6-85dc-d7996816aad3",
"context": {
"device": {
"type": "PC"
},
"custom": {
"dimensions": [
{
"TargetResourceType": "Microsoft.Compute/virtualMachines"
},
{
"ResourceManagementProcessRunId": "827f8aaa-ab72-437c-ba48-d8917a7336a3"
},
{
"OccurrenceTime": "1/13/2017 11:24:37 AM"
}
]
}
}
}
dan Anda ingin menyalinnya ke tabel Azure SQL dalam format berikut, dengan mengekstrak data dari objek dan array:
ID | deviceType | targetResourceType | resourceManagementProcessRunId | occurrenceTime |
---|---|---|---|---|
ed0e4960-d9c5-11e6-85dc-d7996816aad3 | PC | Microsoft.Compute/virtualMachines | 827f8aaa-ab72-437c-ba48-d8917a7336a3 | 13/1/2017 11.24.37 |
Himpunan data input dengan jenis JsonFormat didefinisikan sebagai berikut: (definisi parsial hanya dengan bagian yang relevan). Lebih spesifik:
- Bagian
structure
mendefinisikan nama kolom yang disesuaikan dan jenis data yang sesuai saat mengonversi ke data tabel. Bagian ini bersifat opsional kecuali Anda perlu melakukan pemetaan kolom. Untuk informasi selengkapnya, lihat artikel Memetakan kolom himpunan data sumber ke kolom himpunan data tujuan. jsonPathDefinition
menentukan jalur JSON untuk setiap kolom yang menunjukkan dari mana harus mengekstrak data. Untuk menyalin data dari larik, Anda dapat menggunakanarray[x].property
untuk mengekstrak nilai properti yang diberikan dari objekxth
, atau menggunakanarray[*].property
untuk menemukan nilai dari objek apa pun yang berisi properti tersebut.
"properties": {
"structure": [
{
"name": "id",
"type": "String"
},
{
"name": "deviceType",
"type": "String"
},
{
"name": "targetResourceType",
"type": "String"
},
{
"name": "resourceManagementProcessRunId",
"type": "String"
},
{
"name": "occurrenceTime",
"type": "DateTime"
}
],
"typeProperties": {
"folderPath": "mycontainer/myfolder",
"format": {
"type": "JsonFormat",
"filePattern": "setOfObjects",
"jsonPathDefinition": {"id": "$.id", "deviceType": "$.context.device.type", "targetResourceType": "$.context.custom.dimensions[0].TargetResourceType", "resourceManagementProcessRunId": "$.context.custom.dimensions[1].ResourceManagementProcessRunId", "occurrenceTime": " $.context.custom.dimensions[2].OccurrenceTime"}
}
}
}
Contoh 2: menerapkan silang beberapa objek dengan pola yang sama dari larik
Dalam sampel ini, Anda ingin mengubah satu objek JSON akar menjadi beberapa baris dalam hasil tabel. Jika Anda memiliki file JSON dengan konten berikut:
{
"ordernumber": "01",
"orderdate": "20170122",
"orderlines": [
{
"prod": "p1",
"price": 23
},
{
"prod": "p2",
"price": 13
},
{
"prod": "p3",
"price": 231
}
],
"city": [ { "sanmateo": "No 1" } ]
}
dan Anda ingin menyalinnya ke tabel Azure SQL dalam format berikut, dengan meratakan data di dalam larik dan menggabungkan silang dengan info akar umum:
ordernumber |
orderdate |
order_pd |
order_price |
city |
---|---|---|---|---|
01 | 20170122 | Hal 1 | 23 | [{"sanmateo":"No 1"}] |
01 | 20170122 | P2 | 13 | [{"sanmateo":"No 1"}] |
01 | 20170122 | P3 | 231 | [{"sanmateo":"No 1"}] |
Himpunan data input dengan jenis JsonFormat didefinisikan sebagai berikut: (definisi parsial hanya dengan bagian yang relevan). Lebih spesifik:
- Bagian
structure
mendefinisikan nama kolom yang disesuaikan dan jenis data yang sesuai saat mengonversi ke data tabel. Bagian ini bersifat opsional kecuali Anda perlu melakukan pemetaan kolom. Untuk informasi selengkapnya, lihat artikel Memetakan kolom himpunan data sumber ke kolom himpunan data tujuan. jsonNodeReference
menunjukkan untuk iterasi dan mengekstrak data dari objek dengan pola yang sama di bawah arrayorderlines
.jsonPathDefinition
menentukan jalur JSON untuk setiap kolom yang menunjukkan dari mana harus mengekstrak data. Dalam contoh ini,ordernumber
,orderdate
, dancity
berada di bawah objek akar dengan jalur JSON dimulai dengan$.
, sementaraorder_pd
danorder_price
didefinisikan dengan jalur yang berasal dari elemen array tanpa$.
.
"properties": {
"structure": [
{
"name": "ordernumber",
"type": "String"
},
{
"name": "orderdate",
"type": "String"
},
{
"name": "order_pd",
"type": "String"
},
{
"name": "order_price",
"type": "Int64"
},
{
"name": "city",
"type": "String"
}
],
"typeProperties": {
"folderPath": "mycontainer/myfolder",
"format": {
"type": "JsonFormat",
"filePattern": "setOfObjects",
"jsonNodeReference": "$.orderlines",
"jsonPathDefinition": {"ordernumber": "$.ordernumber", "orderdate": "$.orderdate", "order_pd": "prod", "order_price": "price", "city": " $.city"}
}
}
}
Perhatikan poin-poin berikut:
- Jika
structure
danjsonPathDefinition
tidak ditentukan di dalam himpunan data, Aktivitas Salin akan mendeteksi skema dari objek pertama dan meratakan seluruh objek. - Jika input JSON memiliki larik, secara default Aktivitas Salin mengonversi seluruh nilai larik menjadi untai (karakter). Anda dapat memilih untuk mengekstrak data darinya menggunakan
jsonNodeReference
dan/ataujsonPathDefinition
, atau melompatinya dengan tidak menentukannya dijsonPathDefinition
. - Jika ada nama duplikat di tingkat yang sama, Aktivitas Salin akan memilih nama yang terakhir.
- Nama properti peka huruf besar/kecil. Dua properti dengan nama yang sama, tetapi kapitalisasi berbeda akan diperlakukan sebagai dua properti terpisah.
Kasus 2: Menulis data ke file JSON
Jika Anda memiliki tabel berikut ini di Microsoft Azure SQL Database:
ID | order_date | order_price | order_by |
---|---|---|---|
1 | 20170119 | 2000 | David |
2 | 20170120 | 3500 | Patrick |
3 | 20170121 | 4000 | Jason |
dan untuk setiap baris, Anda berharap untuk menulis ke objek JSON dalam format berikut:
{
"id": "1",
"order": {
"date": "20170119",
"price": 2000,
"customer": "David"
}
}
Himpunan data output dengan jenis JsonFormat didefinisikan sebagai berikut: (definisi parsial dengan hanya bagian yang relevan). Lebih spesifik, bagian structure
mendefinisikan nama properti yang disesuaikan dalam file tujuan, nestingSeparator
(default-nya adalah ".") digunakan untuk mengidentifikasi lapisan sarang dari namanya. Bagian ini bersifat opsional kecuali Anda ingin mengubah nama properti yang dibandingkan dengan nama kolom sumber, atau menyarangkan beberapa properti.
"properties": {
"structure": [
{
"name": "id",
"type": "String"
},
{
"name": "order.date",
"type": "String"
},
{
"name": "order.price",
"type": "Int64"
},
{
"name": "order.customer",
"type": "String"
}
],
"typeProperties": {
"folderPath": "mycontainer/myfolder",
"format": {
"type": "JsonFormat"
}
}
}
Format parquet (warisan)
Catatan
Pelajari model baru dari artikel format Parquet. Konfigurasi berikut pada himpunan data penyimpanan data berbasis file masih didukung apa adanya untuk kompabitilitas mundur. Anda disarankan untuk menggunakan model baru di masa mendatang.
Jika Anda ingin mengurai file Parquet atau menulis data dalam format Parquet, atur properti format
type
ke ParquetFormat. Anda tidak perlu menentukan properti apa pun di bagian Format dalam bagian typeProperties. Contoh:
"format":
{
"type": "ParquetFormat"
}
Perhatikan poin berikut:
- Jenis data kompleks tidak didukung (MAP, LIST).
- Spasi kosong dalam nama kolom tidak didukung.
- File Parquet memiliki opsi terkait pemadatan berikut: NONE, SNAPPY, GZIP, dan LZO. Layanan tersebut mendukung pembacaan data dari file Parquet dalam salah satu format terkompresi ini kecuali LZO - ia menggunakan codec kompresi dalam metadata untuk membaca data. Namun, saat menulis ke file Parquet, layanan tersebut memilih SNAPPY, yang merupakan default untuk format Parquet. Saat ini, tidak ada opsi untuk mengambil alih perilaku ini.
Penting
Untuk salinan yang diberdayakan oleh Microsoft Integration Runtime yang Dihost Sendiri, misalnya antara penyimpanan data lokal dan cloud, jika Anda tidak menyalin file Parquet apa adanya, Anda perlu menginstal 64-bit JRE 8 (Java Runtime Environment) atau OpenJDK di mesin runtime integrasi Anda. Periksa paragraf berikut dengan detail selengkapnya.
Untuk penyalinan yang berjalan pada runtime integrasi yang Dihosting sendiri dengan serialisasi/deserialisasi file Parquet, layanan mencari runtime Java dengan terlebih dahulu memeriksa registri (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome)
untuk JRE, jika tidak ditemukan, kedua memeriksa variabel sistem JAVA_HOME
untuk OpenJDK.
- Untuk menggunakan JRE: IR 64-bit membutuhkan JRE 64-bit. Anda dapat menemukannya dari sini.
- Untuk menggunakan OpenJDK: Ini didukung sejak IR versi 3.13. Kemas jvm.dll dengan semua rakitan OpenJDK lain yang diperlukan ke dalam mesin IR yang dihost sendiri, dan atur variabel lingkungan sistem JAVA_HOME dengan sesuai.
Tip
Jika Anda menyalin data ke/dari format Parquet menggunakan Integration Runtime yang Dihost sendiri dan menekan kesalahan yang mengatakan "Kesalahan terjadi saat memanggil java, pesan: java.lang.OutOfMemoryError:Java heap space", Anda dapat menambahkan variabel lingkungan _JAVA_OPTIONS
di mesin yang meng-host IR yang dihost sendiri untuk menyesuaikan ukuran timbunan min/maks agar JVM memberdayakan salinan tersebut, lalu eksekusi ulang alur.
Contoh: atur variabel _JAVA_OPTIONS
dengan nilai -Xms256m -Xmx16g
. Bendera Xms
menentukan kumpulan alokasi memori awal untuk Java Virtual Machine (JVM), sedangkan Xmx
menentukan kumpulan alokasi memori maksimum. Ini berarti bahwa JVM akan dimulai dengan jumlah memori Xms
dan akan dapat menggunakan jumlah memori maksimum Xmx
. Secara default, layanan tersebut menggunakan min 64 MB dan maks 1G.
Pemetaan jenis data untuk file Parquet
Jenis data layanan sementara | Jenis Parquet Primitive | Parquet Jenis Asli (Deserialisasi) | Parquet Jenis Asli (Serialisasi) |
---|---|---|---|
Boolean | Boolean | T/A | T/A |
SByte | Int32 | Int8 | Int8 |
Byte | Int32 | UInt8 | Int16 |
Int16 | Int32 | Int16 | Int16 |
UInt16 | Int32 | UInt16 | Int32 |
Int32 | Int32 | Int32 | Int32 |
UInt32 | Int64 | UInt32 | Int64 |
Int64 | Int64 | Int64 | Int64 |
UInt64 | Int64/Biner | UInt64 | Decimal |
Tunggal | Float | T/A | T/A |
Laju | Laju | T/A | T/A |
Decimal | Biner | Decimal | Decimal |
String | Biner | Utf8 | Utf8 |
DateTime | Int96 | T/A | T/A |
TimeSpan | Int96 | T/A | T/A |
DateTimeOffset | Int96 | T/A | T/A |
ByteArray | Biner | T/A | T/A |
Guid | Biner | Utf8 | Utf8 |
Char | Biner | Utf8 | Utf8 |
CharArray | Tidak didukung | T/A | T/A |
Format ORC (warisan)
Catatan
Pelajari model baru dari artikel format ORC. Konfigurasi berikut pada himpunan data penyimpanan data berbasis file masih didukung apa adanya untuk kompabitilitas mundur. Anda disarankan untuk menggunakan model baru di masa mendatang.
Jika Anda ingin mengurai file ORC atau menulis data dalam format ORC, atur properti format
type
ke OrcFormat. Anda tidak perlu menentukan properti apa pun di bagian Format dalam bagian typeProperties. Contoh:
"format":
{
"type": "OrcFormat"
}
Perhatikan poin berikut:
- Jenis data kompleks tidak didukung (STRUCT, MAP, LIST, UNION).
- Spasi kosong dalam nama kolom tidak didukung.
- File ORC memiliki tiga opsi terkait pemadatan: NONE, ZLIB, SNAPPY. Layanan tersebut mendukung pembacaan data dari file ORC dalam salah satu format terkompresi ini. Ini menggunakan kodek pemadatan dalam metadata untuk membaca data. Namun, saat menulis ke file ORC, layanan tersebut memilih ZLIB, yang merupakan default untuk ORC. Saat ini, tidak ada opsi untuk mengambil alih perilaku ini.
Penting
Untuk salinan yang diberdayakan oleh Microsoft Integration Runtime yang Dihost Sendiri, misalnya antara penyimpanan data lokal dan cloud, jika Anda tidak menyalin file ORC apa adanya, Anda perlu menginstal 64-bit JRE 8 (Java Runtime Environment) atau OpenJDK di mesin runtime integrasi Anda. Periksa paragraf berikut dengan detail selengkapnya.
Untuk penyalinan yang berjalan pada IR yang dihost sendiri dengan serialisasi/deserialisasi file ORC, layanan akan mencari runtime Java dengan terlebih dahulu memeriksa registri (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome)
untuk JRE, jika tidak ditemukan, lalu memeriksa variabel sistem JAVA_HOME
untuk OpenJDK.
- Untuk menggunakan JRE: IR 64-bit membutuhkan JRE 64-bit. Anda dapat menemukannya dari sini.
- Untuk menggunakan OpenJDK: Ini didukung sejak IR versi 3.13. Kemas jvm.dll dengan semua rakitan OpenJDK lain yang diperlukan ke dalam mesin IR yang dihost sendiri, dan atur variabel lingkungan sistem JAVA_HOME dengan sesuai.
Pemetaan jenis data untuk file ORC
Jenis data layanan sementara | Jenis ORC |
---|---|
Boolean | Boolean |
SByte | Byte |
Byte | Pendek |
Int16 | Pendek |
UInt16 | Int |
Int32 | Int |
UInt32 | Panjang |
Int64 | Panjang |
UInt64 | String |
Tunggal | Float |
Laju | Laju |
Decimal | Decimal |
String | String |
DateTime | Tanda Waktu |
DateTimeOffset | Tanda Waktu |
TimeSpan | Tanda Waktu |
ByteArray | Biner |
Guid | String |
Char | Char(1) |
Format AVRO (warisan)
Catatan
Pelajari model baru dari artikel format Avro. Konfigurasi berikut pada himpunan data penyimpanan data berbasis file masih didukung apa adanya untuk kompabitilitas mundur. Anda disarankan untuk menggunakan model baru di masa mendatang.
Jika Anda ingin memilah file Avro atau menulis data dalam format Avro, atur properti format
type
ke AvroFormat. Anda tidak perlu menentukan properti apa pun di bagian Format dalam bagian typeProperties. Contoh:
"format":
{
"type": "AvroFormat",
}
Untuk menggunakan format Avro dalam tabel Apache Hive, Anda dapat merujuk ke Tutorial Apache Hive.
Perhatikan poin berikut:
- Jenis data kompleks tidak didukung (record, enum, array, map, union, and fixed).
Dukungan kompresi (warisan)
Layanan tersebut mendukung kompresi/dekompresi data selama penyalinan. Saat Anda menentukan compression
properti dalam himpunan data input, aktivitas salin membaca data terkompresi dari sumber dan mendekompresinya; dan ketika Anda menentukan properti dalam himpunan data output, aktivitas salin memadatkan kemudian menulis data ke sink. Berikut beberapa contoh skenario:
- Membaca data terkompresi GZIP dari Azure blob, mendekompresinya, dan menulis data hasil ke Azure SQL Database. Anda menentukan input himpunan data Azure Blob dengan properti
compression
type
sebagai GZIP. - Membaca data dari file teks biasa dari Sistem File lokal, mengompresinya menggunakan format GZip, dan menulis data yang terkompresi ke Azure blob. Anda menentukan output himpunan data Azure Blob dengan properti
compression
type
sebagai GZip. - Membaca file .zip server FTP, mendekompresinya untuk mendapatkan file di dalamnya, dan menempatkan file tersebut ke Azure Data Lake Store. Anda menentukan input himpunan data FTP dengan properti
compression
type
sebagai ZipDeflate. - Membaca data yang dikompresi GZIP dari Azure blob, mendekompresinya, mengompresnya menggunakan BZIP2, dan menulis data hasil ke Azure blob. Anda menentukan input himpunan data Azure Blob dengan
compression
type
diatur ke GZIP dan output himpunan data dengancompression
type
diatur ke BZIP2.
Untuk menentukan kompresi untuk himpunan data, gunakan properti kompresi di himpunan data JSON seperti pada contoh berikut:
{
"name": "AzureBlobDataSet",
"properties": {
"type": "AzureBlob",
"linkedServiceName": {
"referenceName": "StorageLinkedService",
"type": "LinkedServiceReference"
},
"typeProperties": {
"fileName": "pagecounts.csv.gz",
"folderPath": "compression/file/",
"format": {
"type": "TextFormat"
},
"compression": {
"type": "GZip",
"level": "Optimal"
}
}
}
}
Bagian kompresi memiliki dua properti:
Jenis: kodek pemadatan, yang dapat berupa GZIP, Deflate, BZIP2, atau ZipDeflate. Perhatikan saat menggunakan aktivitas salin untuk mendekompresi file ZipDeflate dan menulis ke penyimpanan data sink berbasis file, file akan diekstraksi ke folder:
<path specified in dataset>/<folder named as source zip file>/
.Tingkat: rasio kompresi, yang bisa Optimal atau Tercepat.
Tercepat: Operasi kompresi akan selesai secepat mungkin, meski file hasil tidak dikompresi secara optimal.
Optimal: Operasi pemadatan akan dipadatkan secara optimal, bahkan jika operasi membutuhkan waktu lebih lama untuk menyelesaikannya.
Untuk informasi selengkapnya, lihat topik Tingkat Pemadatan.
Catatan
Pengaturan pemadatan tidak didukung untuk data dalam AvroFormat, OrcFormat, atau ParquetFormat. Saat membaca file dalam format ini, layanan tersebut mendeteksi dan menggunakan codec kompresi dalam metadata. Saat menulis ke file dalam format ini, layanan tersebut memilih codec kompresi default untuk format itu. Misalnya, ZLIB untuk OrcFormat dan SNAPPY untuk ParquetFormat.
Jenis file yang tidak didukung dan format pemadatan
Anda dapat menggunakan fitur ekstensibilitas untuk mengubah file yang tidak didukung. Dua opsi termasuk Azure Functions dan tugas kustom dengan menggunakan Azure Batch.
Anda dapat melihat sampel yang menggunakan fungsi Azure untuk mengekstrak konten file tar. Untuk informasi selengkapnya, lihat aktivitas Azure Functions.
Anda juga dapat membangun fungsionalitas ini menggunakan aktivitas dotnet kustom. Informasi selengkapnya tersedia di sini
Konten terkait
Pelajari format dan pemadatan file terbaru yang didukung dari Format dan pemadatan file yang didukung.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk