全部产品
Search
文档中心

MaxCompute:UNLOAD

更新时间:Jan 01, 2026

Anda dapat menggunakan MaxCompute untuk mengekspor data dari proyek MaxCompute ke penyimpanan eksternal, seperti Object Storage Service (OSS) atau Hologres, sehingga mesin komputasi lain dapat mengakses data tersebut. Topik ini menjelaskan perintah UNLOAD beserta contoh penggunaannya.

Fitur

Anda dapat menggunakan perintah UNLOAD di MaxCompute untuk mengekspor data ke penyimpanan eksternal, seperti OSS atau Hologres. Data yang diekspor ke OSS dapat disimpan dalam format CSV atau format open source lainnya.

  • Sebelum mengekspor data MaxCompute ke mesin komputasi lain seperti Amazon Redshift dan BigQuery, Anda harus terlebih dahulu mengekspornya ke OSS.

  • Mengekspor ulang data tidak akan menimpa file yang sudah ada; sebaliknya, file baru akan ditambahkan.

Lingkup

  • Sistem secara otomatis menghasilkan metode pemisahan dan nama file yang diekspor ke OSS. Anda tidak dapat menyesuaikan nama atau akhiran file tersebut.

  • Mode otorisasi dual-signature tidak didukung saat mengekspor data MaxCompute ke Hologres.

  • Anda tidak dapat mengekspor data MaxCompute ke tabel partisi Hologres.

  • Anda tidak dapat menambahkan akhiran ke file yang diekspor dalam format open source.

Alat yang didukung

Anda dapat menjalankan perintah dalam topik ini pada platform berikut:

Penagihan

  • Perintah UNLOAD tidak dikenai biaya. Namun, klausa kueri dalam perintah tersebut melakukan pemindaian data dan mengonsumsi sumber daya komputasi, sehingga ditagih sebagai pekerjaan SQL standar.

  • Menyimpan data terstruktur di OSS dapat mengurangi biaya penyimpanan dalam beberapa skenario, tetapi Anda harus memperkirakan biayanya terlebih dahulu.

    Biaya penyimpanan data MaxCompute adalah USD 0,018 per GB per bulan. Untuk informasi lebih lanjut tentang penagihan penyimpanan, lihat Biaya penyimpanan (pay-as-you-go). Data yang diimpor ke MaxCompute dikompresi dengan rasio sekitar 5:1, dan Anda ditagih berdasarkan ukuran data terkompresi tersebut.

    Harga penyimpanan OSS Standard adalah USD 0,018 per GB per bulan. Kelas penyimpanan lain seperti Infrequent Access, Archive, dan Cold Archive juga tersedia. Untuk informasi selengkapnya, lihat Biaya penyimpanan.

    Jika tujuan ekspor data hanya untuk mengurangi biaya penyimpanan, Anda harus menguji dan memperkirakan rasio kompresi, memperkirakan biaya operasi UNLOAD berdasarkan pernyataan kueri ekspor, serta mengevaluasi cara mengakses data yang diekspor guna menghindari biaya tambahan akibat migrasi data yang tidak perlu.

Otorisasi

  • Akun operasional memiliki izin MaxCompute yang diperlukan.

    Sebelum menjalankan operasi unload, akun operasional harus memiliki izin baca (Select) pada tabel sumber di proyek MaxCompute. Untuk informasi lebih lanjut tentang cara memberikan izin, lihat Izin MaxCompute.

  • Akun operasional memiliki izin yang diperlukan untuk sumber data di penyimpanan eksternal.

    Sebelum mengekspor data dari MaxCompute ke penyimpanan eksternal (OSS atau Hologres), Anda harus memberikan akses MaxCompute ke penyimpanan eksternal tersebut. Mode otorisasi untuk perintah unload sama dengan mode otorisasi untuk tabel eksternal MaxCompute. Bagian berikut menjelaskan proses otorisasi untuk OSS dan Hologres.

    Penyimpanan eksternal: OSS

    Anda dapat menggunakan otorisasi satu klik untuk meningkatkan keamanan. Untuk informasi selengkapnya, lihat Otorisasi mode STS.

    Catatan

    Contoh dalam topik ini menggunakan otorisasi satu klik. Nama role didefinisikan sebagai AliyunODPSDefaultRole.

    Penyimpanan eksternal: Hologres

    Anda dapat membuat role Resource Access Management (RAM), memberikan izin akses ke MaxCompute, lalu menambahkan role tersebut ke instans Hologres untuk menyelesaikan otorisasi. Untuk informasi selengkapnya, lihat Buat tabel eksternal Hologres (mode STS).

Metode ekspor

Setelah menyelesaikan otorisasi yang diperlukan, pilih metode ekspor berdasarkan format data yang ingin Anda ekspor:

Ekspor menggunakan extractor bawaan (StorageHandler)

Sintaks

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]} 
INTO 
LOCATION <external_location>
STORED BY <StorageHandler>
[WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)];

Parameter

Penyimpanan eksternal: OSS

Parameter

Wajib

Deskripsi

select_statement

Tidak

Klausa kueri SELECT yang mengambil data untuk dimasukkan ke path OSS tujuan dari tabel sumber (berpartisi atau tidak berpartisi). Untuk informasi lebih lanjut tentang SELECT, lihat Sintaks SELECT.

table_name, pt_spec

Tidak

Menentukan data yang akan diekspor menggunakan nama tabel atau nama tabel dan nama partisi. Metode ekspor ini tidak menghasilkan pernyataan kueri dan tidak dikenai biaya. Format pt_spec adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

external_location

Ya

Menentukan path OSS tujuan untuk menyimpan data yang diekspor. Formatnya adalah 'oss://<oss_endpoint>/<object>'. Untuk informasi lebih lanjut tentang path OSS, lihat Akses OSS melalui jaringan IPv6.

StorageHandler

Ya

Menentukan nama StorageHandler bawaan. Nilainya harus berupa com.aliyun.odps.CsvStorageHandler atau com.aliyun.odps.TsvStorageHandler. Ini adalah StorageHandler bawaan untuk memproses file CSV dan TSV. StorageHandler tersebut mendefinisikan cara membaca atau menulis file CSV dan TSV. Logika terkait telah diimplementasikan oleh sistem. Anda hanya perlu menentukan parameter ini. File yang diekspor menggunakan metode ini secara default memiliki akhiran .csv atau .tsv. Penggunaannya sama seperti pada tabel eksternal MaxCompute. Untuk informasi selengkapnya, lihat Buat tabel eksternal OSS.

'<property_name>'='<property_value>'

Tidak

property_name adalah nama properti, dan property_value adalah nilai properti. Properti yang didukung sama dengan properti untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut tentang properti, lihat Buat tabel eksternal OSS.

Penyimpanan eksternal: Hologres

Parameter

Wajib

Deskripsi

select_statement

Tidak

Klausa kueri SELECT yang mengambil data untuk dimasukkan ke path Hologres tujuan dari tabel sumber (tidak berpartisi). Untuk informasi lebih lanjut tentang SELECT, lihat Sintaks SELECT.

table_name

Tidak

Menentukan data yang akan diekspor menggunakan nama tabel. Metode ekspor ini tidak menghasilkan pernyataan kueri dan tidak dikenai biaya.

external_location

Ya

Menentukan path Hologres tujuan untuk menyimpan data yang diekspor. Formatnya adalah 'jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/'. Untuk informasi lebih lanjut tentang path Hologres, lihat Buat tabel eksternal Hologres.

StorageHandler

Ya

Menentukan nama StorageHandler bawaan. Nilainya harus berupa com.aliyun.odps.jdbc.JdbcStorageHandler, yang menggunakan metode koneksi JdbcStorageHandler.

'<property_name>'='<property_value>'

Tidak

property_name adalah nama properti, dan property_value adalah nilai properti. Parameter berikut wajib saat mengekspor data ke Hologres:

  • 'odps.properties.rolearn'='<ram_arn>': Menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari role RAM untuk autentikasi Security Token Service (STS). Anda dapat memperoleh ARN di Konsol RAM. Klik nama role RAM target dan temukan ARN di bagian Basic Information.

  • 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver': Menentukan driver untuk menghubungkan ke database Hologres. Nilainya harus berupa org.postgresql.Driver.

  • 'odps.federation.jdbc.target.db.type'='holo': Menentukan jenis database yang akan dihubungkan. Nilainya harus berupa holo.

Properti yang didukung untuk Hologres sama dengan properti untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut tentang properti, lihat Buat tabel eksternal Hologres.

Contoh

Penyimpanan eksternal: OSS

Contoh ini menunjukkan cara mengekspor data dari tabel `sale_detail` di proyek MaxCompute ke OSS. Data sampel dalam tabel `sale_detail` adalah sebagai berikut:

+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+
  1. Masuk ke Konsol OSS dan buat folder bernama mc-unload/data_location/ di bucket yang berada di wilayah oss-cn-hangzhou. Kemudian, susun path OSS. Untuk informasi lebih lanjut tentang cara membuat bucket OSS, lihat Buat bucket di konsol.Bucket

    Path OSS disusun dari informasi bucket, wilayah, dan titik akhir sebagai berikut:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. Masuk ke Klien MaxCompute dan jalankan perintah UNLOAD untuk mengekspor data dari tabel `sale_detail` ke OSS. Berikut adalah contoh perintah:

    • Contoh 1: Ekspor data dari tabel `sale_detail` dalam format CSV dan kompres menggunakan GZIP. Perintah berikut adalah contohnya.

      -- Kontrol jumlah file yang diekspor: Tetapkan ukuran data (dalam MB) yang dapat dibaca oleh satu worker dari tabel MaxCompute. Karena tabel MaxCompute dikompresi, data yang diekspor ke OSS biasanya sekitar empat kali lebih besar.
      SET odps.stage.mapper.split.size=256;
      -- Ekspor data.
      UNLOAD FROM  
      (SELECT * FROM sale_detail)
      INTO
      LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location'
      STORED BY 'com.aliyun.odps.CsvStorageHandler'
      WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 'odps.text.option.gzip.output.enabled'='true');
      -- Ini setara dengan pernyataan berikut.
      SET odps.stage.mapper.split.size=256;
      UNLOAD FROM sale_detail 
      INTO
      LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location'
      STORED BY 'com.aliyun.odps.CsvStorageHandler'
      WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 'odps.text.option.gzip.output.enabled'='true');                                 
    • Contoh 2: Ekspor data dari partisi `sale_date='2013'` dan `region='china'` di tabel `sale_detail`. Data diekspor dalam format TSV dan dikompresi menggunakan GZIP.

      -- Kontrol jumlah file yang diekspor: Tetapkan ukuran data (dalam MB) yang dapat dibaca oleh satu worker dari tabel MaxCompute. Karena tabel MaxCompute dikompresi, data yang diekspor ke OSS biasanya sekitar empat kali lebih besar.
      SET odps.stage.mapper.split.size=256;
      -- Ekspor data.
      UNLOAD FROM sale_detail PARTITION (sale_date='2013',region='china')
      INTO
      LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location'
      STORED BY 'com.aliyun.odps.TsvStorageHandler'
      WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 'odps.text.option.gzip.output.enabled'='true');

    'odps.text.option.gzip.output.enabled'='true' menentukan bahwa file yang diekspor dikompresi menggunakan GZIP. Saat ini, GZIP adalah satu-satunya format kompresi yang didukung.

  3. Anda dapat masuk ke Konsol Manajemen OSS dan melihat hasil impor di path OSS tujuan.

    • Hasil Contoh 1 ditunjukkan pada gambar berikut.导入结果

    • Hasil Contoh 2 ditunjukkan pada gambar berikut.导入结果

Penyimpanan eksternal: Hologres

Contoh ini menunjukkan cara mengekspor data dari tabel data_test di proyek MaxCompute ke Hologres. Data sampel dalam tabel data_test adalah sebagai berikut:

+------------+------+
| id         | name |
+------------+------+
| 3          | rgege |
| 4          | Gegegegr |
+------------+------+
  1. Di Hologres, buat tabel tujuan bernama mc_2_holo di database test. Anda dapat menjalankan pernyataan pembuatan tabel di editor SQL HoloWeb. Untuk informasi selengkapnya, lihat Hubungkan ke HoloWeb dan jalankan kueri. Pernyataannya adalah sebagai berikut:

    Catatan

    Tipe data bidang di tabel tujuan harus sesuai dengan tipe data bidang di tabel sumber MaxCompute. Untuk informasi selengkapnya, lihat Pemetaan tipe data antara MaxCompute dan Hologres.

    CREATE TABLE mc_2_holo (id INT, name TEXT);
  2. Masuk ke Klien MaxCompute dan jalankan perintah UNLOAD untuk mengekspor data dari tabel data_test ke Hologres. Perintah berikut adalah contohnya:

    UNLOAD FROM  
    (SELECT * FROM data_test) 
    INTO 
    LOCATION 'jdbc:postgresql://hgprecn-cn-5y**********-cn-hangzhou-internal.hologres.aliyuncs.com:80/test?ApplicationName=MaxCompute&currentSchema=public&useSSL=false&table=mc_2_holo/'  
    STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler'
    WITH SERDEPROPERTIES ( 
      'odps.properties.rolearn'='acs:ram::13**************:role/aliyunodpsholorole',
      'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 
      'odps.federation.jdbc.target.db.type'='holo'
    );
  3. Kueri data yang diekspor di Hologres:

    SELECT * FROM mc_2_holo;

    Berikut adalah contoh hasilnya:

    id	name
    4	Gegegegr
    3	rgege

Ekspor data dalam format open source lainnya

Sintaks

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO 
LOCATION <external_location>
[ROW FORMAT SERDE '<serde_class>' 
  [WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)]
]
STORED AS <file_format>
[PROPERTIES ('<tbproperty_name>'='<tbproperty_value>')];

Parameter

Parameter

Wajib

Deskripsi

select_statement

Tidak

Klausa kueri SELECT yang mengambil data untuk dimasukkan ke path OSS tujuan dari tabel sumber (berpartisi atau tidak berpartisi). Untuk informasi lebih lanjut tentang SELECT, lihat Sintaks SELECT.

table_name, pt_spec

Tidak

Menentukan data yang akan diekspor menggunakan nama tabel atau nama tabel dan nama partisi. Metode ekspor ini tidak menghasilkan pernyataan kueri dan tidak dikenai biaya. Format pt_spec adalah (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

external_location

Ya

Menentukan path OSS tujuan untuk menyimpan data yang diekspor. Formatnya adalah 'oss://<oss_endpoint>/<object>'. Untuk informasi lebih lanjut tentang path OSS, lihat Akses OSS melalui jaringan IPv6.

serde_class

Tidak

Penggunaannya sama seperti pada tabel eksternal MaxCompute. Untuk informasi selengkapnya, lihat Buat tabel eksternal OSS.

'<property_name>'='<property_value>'

Tidak

property_name adalah nama properti, dan property_value adalah nilai properti. Properti yang didukung sama dengan properti untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut tentang properti, lihat Buat tabel eksternal OSS.

file_format

Ya

Menentukan format file data yang diekspor. Contohnya termasuk ORC, PARQUET, RCFILE, SEQUENCEFILE, dan TEXTFILE. Penggunaannya sama seperti pada tabel eksternal MaxCompute. Untuk informasi selengkapnya, lihat Buat tabel eksternal OSS.

'<tbproperty_name>'='<tbproperty_value>'

Tidak

tbproperty_name adalah nama properti untuk informasi ekstensi tabel eksternal, dan tbproperty_value adalah nilai properti. Misalnya, data open source mendukung ekspor dalam format kompresi SNAPPY atau LZO. Tetapkan properti kompresi menjadi 'mcfed.parquet.compression'='SNAPPY' atau 'mcfed.parquet.compression'='LZO'.

Contoh: Ekspor data dari tabel `sale_detail` di proyek MaxCompute ke OSS.

Data sampel

-- Data dalam tabel sale_detail.
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+
  1. Masuk ke Konsol OSS, buat folder bernama mc-unload/data_location/ di bucket yang berada di wilayah oss-cn-hangzhou, dan susun path OSS. Untuk informasi lebih lanjut tentang cara membuat bucket OSS, lihat Mulai Cepat untuk konsol.

    Path OSS disusun dari informasi bucket, wilayah, dan titik akhir sebagai berikut:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. Masuk ke Klien MaxCompute dan jalankan perintah UNLOAD untuk mengekspor data dari tabel `sale_detail` ke OSS.

    Contoh 1: Ekspor data dari tabel `sale_detail` dalam format PARQUET dan kompres menggunakan SNAPPY.

    -- Kontrol jumlah file yang diekspor: Tetapkan ukuran data (dalam MB) yang dapat dibaca oleh satu worker dari tabel MaxCompute.
    -- Karena tabel MaxCompute dikompresi, data yang diekspor ke OSS biasanya sekitar empat kali lebih besar.
    SET odps.stage.mapper.split.size=256;
    
    -- Ekspor data.
    UNLOAD FROM 
    (SELECT * FROM sale_detail) 
    INTO  
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
    WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole') 
    STORED AS PARQUET 
    PROPERTIES('mcfed.parquet.compression'='SNAPPY');

    Contoh 2: Ekspor data dari partisi `sale_date='2013'` dan `region='china'` di tabel `sale_detail` dalam format PARQUET dan kompres menggunakan SNAPPY.

    --Kontrol jumlah file yang diekspor: Tetapkan ukuran data (dalam MB) yang dapat dibaca oleh satu worker dari tabel MaxCompute. Karena tabel MaxCompute dikompresi, data yang diekspor ke OSS biasanya sekitar empat kali lebih besar.
    SET odps.stage.mapper.split.size=256;
    --Ekspor data.
    UNLOAD FROM sale_detail PARTITION (sale_date='2013',region='china') 
    INTO 
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
    WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole') 
    STORED AS PARQUET 
    PROPERTIES('mcfed.parquet.compression'='SNAPPY');
    Catatan

    Saat mengekspor data yang dikompresi dalam format SNAPPY atau LZO, file yang diekspor tidak memiliki ekstensi .snappy atau .lzo.

    Contoh 3: Ekspor data dari tabel `sale_detail` ke file .txt dan gunakan koma sebagai pemisah.

    SET odps.sql.allow.fullscan=true; 
    
    UNLOAD FROM (SELECT * FROM sale_detail)
    INTO
    LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mc-unload/data_location/'
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    WITH SERDEPROPERTIES ('field.delim'=',')
    STORED AS TEXTFILE
    properties ('odps.external.data.enable.extension'='true');

Tetapkan awalan, akhiran, dan ekstensi untuk file yang diekspor oleh perintah UNLOAD

Saat menggunakan perintah UNLOAD untuk mengekspor tabel MaxCompute ke file, Anda mungkin perlu menentukan awalan, akhiran, dan ekstensi file untuk skenario bisnis tertentu. Topik ini menjelaskan cara menyesuaikan awalan dan akhiran, serta cara menghasilkan ekstensi secara otomatis yang sesuai dengan format file.

Sintaks

  • Ekspor file dalam format seperti CSV dan TSV menggunakan parser bawaan.

    -- Gunakan parser bawaan untuk mengekspor file dalam format seperti CSV dan TSV.
    UNLOAD FROM  {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
    INTO 
    LOCATION <external_location> 
    [STORED BY <StorageHandler>]
    [WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)];
  • Ekspor file dalam format open source seperti ORC dan Parquet.

    UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]} 
    INTO 
    LOCATION <external_location> 
    [ROW FORMAT SERDE '<serde_class>' 
      [WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)] 
    ] 
    STORED AS <file_format> 
    [PROPERTIES('<tbproperty_name>'='<tbproperty_value>')];
    • Untuk menetapkan awalan, atur property_name menjadi odps.external.data.prefix. Nilai kustom tidak boleh lebih dari 10 karakter.

    • Untuk menggunakan format file sebagai ekstensi, atur property_name menjadi odps.external.data.enable.extension dan nilainya menjadi true.

    • Untuk informasi lebih lanjut tentang parameter lainnya, lihat Ekspor data menggunakan extractor bawaan (StorageHandler).

    • Untuk menetapkan awalan, atur tbproperty_name menjadi odps.external.data.prefix. Nilai kustom tidak boleh lebih dari 10 karakter.

    • Untuk menggunakan format file sebagai ekstensi, atur tbproperty_name menjadi odps.external.data.enable.extension dan nilainya menjadi true.

    • Untuk informasi lebih lanjut tentang parameter lainnya, lihat Ekspor data dalam format open source lainnya.

Deskripsi parameter

property_name

Skenario

Deskripsi

property_value

Nilai default

odps.external.data.output.prefix

(Kompatibel dengan odps.external.data.prefix)

Tambahkan properti ini untuk menentukan awalan kustom untuk file output.

  • Hanya berisi angka, huruf, dan garis bawah (a-z, A-Z, 0-9, _).

  • Panjangnya 1 hingga 10 karakter.

Kombinasi karakter yang memenuhi persyaratan, seperti 'mc_'.

Tidak ada

odps.external.data.enable.extension

Tambahkan properti ini untuk menampilkan ekstensi file output.

True menunjukkan bahwa ekstensi file output ditampilkan. False menunjukkan bahwa ekstensi tidak ditampilkan.

  • True

  • False

False

odps.external.data.output.suffix

Tambahkan properti ini untuk menentukan akhiran kustom untuk file output.

Hanya berisi angka, huruf, dan garis bawah (a-z, A-Z, 0-9, _).

Kombinasi karakter yang memenuhi persyaratan, seperti '_hangzhou'.

Tidak ada

odps.external.data.output.explicit.extension

Tambahkan properti ini untuk menentukan ekstensi kustom untuk file output.

  • Hanya berisi angka, huruf, dan garis bawah (a-z, A-Z, 0-9, _).

  • Panjangnya 1 hingga 10 karakter.

  • Parameter ini memiliki prioritas lebih tinggi daripada parameter odps.external.data.enable.extension.

Kombinasi karakter yang memenuhi persyaratan, seperti "jsonl".

Tidak ada

Untuk informasi lebih lanjut tentang parameter lainnya, lihat Ekspor data menggunakan extractor bawaan (StorageHandler) dan Ekspor data dalam format open source lainnya.

Referensi akhiran

Tabel berikut mencantumkan ekstensi yang dihasilkan secara otomatis untuk tabel eksternal saat Anda mengatur odps.external.data.enable.extension=true.

Format file

SerDe

Akhiran

SEQUENCEFILE

org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

.sequencefile

TEXTFILE

org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

.txt

RCFILE

org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe

.rcfile

ORC

org.apache.hadoop.hive.ql.io.orc.OrcSerde

.orc

PARQUET

org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

.parquet

AVRO

org.apache.hadoop.hive.serde2.avro.AvroSerDe

.avro

JSON

org.apache.hive.hcatalog.data.JsonSerDe

.json

CSV

org.apache.hadoop.hive.serde2.OpenCSVSerde

.csv

Contoh

Ekspor file dalam format TEXTFILE

Ekspor file dalam format TEXTFILE. Contoh ini menambahkan awalan mc_ dan akhiran _beijing, serta menghasilkan ekstensi secara otomatis.

UNLOAD FROM (SELECT * FROM vehicle) 
INTO 
LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/***/textfile' 
row format serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS textfile
PROPERTIES (
    'odps.external.data.output.prefix'='mc_', 
    'odps.external.data.output.suffix'='_beijing',
    'odps.external.data.enable.extension'='true');

Anda dapat melihat file yang diekspor di path OSS tujuan:

image

Ekspor file dalam format JSON

Anda dapat mengekspor file dalam format JSON dengan awalan mc_, akhiran _beijing, dan ekstensi kustom jsonl.

UNLOAD FROM (SELECT * FROM vehicle) 
INTO 
LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/***/json' 
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS textfile
PROPERTIES (
    'odps.external.data.output.prefix'='mc_', 
    'odps.external.data.output.suffix'='_beijing',
    'odps.external.data.output.explicit.extension'='jsonl');

Anda dapat melihat file yang diekspor di path OSS tujuan:

image

Referensi

Untuk informasi tentang mengimpor data dalam format CSV atau format open source lainnya dari penyimpanan eksternal ke MaxCompute, lihat LOAD.