全部产品
Search
文档中心

MaxCompute:UNLOAD

更新时间:Nov 05, 2025

MaxCompute memungkinkan Anda mengekspor data dari proyek MaxCompute ke penyimpanan data eksternal seperti Object Storage Service (OSS) atau Hologres. Dengan cara ini, mesin komputasi lain dapat menggunakan data yang diekspor dari MaxCompute ke penyimpanan data eksternal. Topik ini menjelaskan cara menggunakan pernyataan UNLOAD dan memberikan contoh terkait.

Anda dapat mengeksekusi pernyataan berikut pada platform berikut:

Deskripsi fitur

MaxCompute memungkinkan Anda mengeksekusi pernyataan UNLOAD untuk mengekspor data dari MaxCompute ke penyimpanan data eksternal OSS atau Hologres. OSS dapat menyimpan data dalam format CSV atau format sumber terbuka lainnya. Perhatikan poin-poin berikut:

  • Data MaxCompute harus diekspor ke OSS sebelum data tersebut dapat diekspor ke mesin komputasi lain, seperti Amazon Redshift dan BigQuery.

  • Jika Anda berulang kali mengekspor data, file yang sebelumnya diekspor tidak akan ditimpa. Sebagai gantinya, file baru akan dihasilkan.

Batasan

Penggunaan pernyataan UNLOAD memiliki batasan berikut:

  • MaxCompute secara otomatis membagi file yang diekspor ke OSS menjadi beberapa bagian dan menghasilkan nama untuk file tersebut. Anda tidak dapat menentukan nama kustom atau ekstensi nama file untuk file yang diekspor.

  • Saat Anda mengekspor data dari MaxCompute ke Hologres, autentikasi tanda tangan ganda tidak didukung.

  • Anda tidak dapat mengekspor data dari MaxCompute ke tabel Hologres yang dipartisi.

  • Ekstensi nama file tidak dapat ditambahkan ke file yang diekspor dalam format sumber terbuka.

Peringatan

  • Anda tidak dikenakan biaya untuk pernyataan UNLOAD. Klausul subquery dalam pernyataan UNLOAD perlu memindai data dan menggunakan sumber daya komputasi untuk menghitung hasilnya. Oleh karena itu, klausul subquery tersebut dikenakan biaya sebagai pekerjaan SQL biasa.

  • Dalam beberapa skenario, Anda dapat menyimpan data terstruktur di OSS untuk mengurangi biaya penyimpanan. Namun, Anda harus memperkirakan biayanya terlebih dahulu.

    Biaya penyimpanan MaxCompute adalah USD 0,018 per GB-bulan. Untuk detail lebih lanjut tentang biaya penyimpanan, lihat Penetapan harga penyimpanan (bayar sesuai penggunaan). Rasio kompresi data untuk data yang diimpor ke MaxCompute sekitar 5:1, dan biaya yang dikenakan didasarkan pada ukuran data setelah kompresi.

    Jika Anda menggunakan kelas penyimpanan Standar OSS untuk menyimpan data Anda, harga satuan adalah USD 0,018 per GB-bulan. Untuk informasi lebih lanjut tentang biaya untuk kelas penyimpanan Infrequent Access (IA), Arsip, dan Penyimpanan Arsip Dingin, lihat Biaya penyimpanan.

    Jika Anda ingin mengekspor data untuk mengurangi biaya penyimpanan, kami sarankan Anda memperkirakan rasio kompresi data berdasarkan tes fitur data, memperkirakan biaya penggunaan pernyataan UNLOAD berdasarkan pernyataan query yang digunakan saat mengekspor data, dan mengevaluasi metode akses data yang diekspor. Ini membantu Anda mencegah biaya tambahan yang disebabkan oleh migrasi data yang tidak perlu.

Prasyarat

  • Akun operasi diberi izin terkait pada MaxCompute.

    Sebelum Anda mengeksekusi pernyataan UNLOAD menggunakan akun, pastikan bahwa akun tersebut memiliki izin SELECT untuk membaca data dari tabel yang ingin Anda ekspor di proyek MaxCompute. Untuk informasi lebih lanjut tentang cara memberikan izin, lihat Izin MaxCompute.

  • Akun operasi diberi izin yang diperlukan pada penyimpanan data eksternal terkait.

    Sebelum Anda mengekspor data dari MaxCompute ke penyimpanan data eksternal OSS atau Hologres menggunakan akun, Anda harus memberikan akun tersebut izin untuk mengakses penyimpanan data eksternal dari MaxCompute. Mode otorisasi pernyataan UNLOAD sama dengan mode otorisasi tabel eksternal MaxCompute. Bagian berikut menjelaskan cara mengotorisasi MaxCompute untuk mengakses OSS dan Hologres.

    Otorisasi MaxCompute untuk mengakses OSS

    Anda dapat melakukan otorisasi satu klik untuk mencapai keamanan yang lebih tinggi. Untuk informasi lebih lanjut, lihat Otorisasi STS.

    Catatan

    Dalam contoh berikut, otorisasi satu klik digunakan dan nama perannya adalah AliyunODPSDefaultRole.

    Otorisasi MaxCompute untuk mengakses Hologres

    Anda dapat membuat peran RAM, memberikan peran RAM izin untuk mengakses MaxCompute, dan kemudian menambahkan peran RAM ke instance Hologres untuk menyelesaikan otorisasi. Untuk informasi lebih lanjut, lihat Buat tabel asing Hologres dalam mode STS.

Setelah Anda menyelesaikan otorisasi sebelumnya, Anda harus memilih metode ekspor berdasarkan format data yang ingin Anda ekspor.

Gunakan ekstraktor bawaan untuk mengekspor data (StorageHandler)

  • Sintaksis

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

    Ekspor data dari MaxCompute ke OSS

    Parameter

    Diperlukan

    Deskripsi

    select_statement

    Tidak

    Klausa SELECT yang digunakan untuk menanyakan data yang ingin Anda masukkan ke direktori tujuan OSS dari tabel sumber. Tabel sumber bisa berupa tabel partisi atau tabel non-partisi. Untuk informasi lebih lanjut tentang klausa SELECT, lihat Sintaksis SELECT.

    table_name, pt_spec

    Tidak

    Anda dapat menggunakan nama tabel atau kombinasi nama tabel dan nama partisi untuk menentukan data yang ingin Anda ekspor. Metode ekspor ini tidak menghasilkan pernyataan query secara otomatis. Oleh karena itu, tidak ada biaya yang dikeluarkan. Nilai pt_spec berada dalam format (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

    external_location

    Ya

    Menentukan jalur OSS target tempat data yang diekspor disimpan. Formatnya adalah 'oss://<oss_endpoint>/<object>'. Untuk informasi lebih lanjut tentang jalur OSS, lihat Gunakan titik akhir yang mendukung IPv6 untuk mengakses OSS.

    StorageHandler

    Ya

    Nama handler penyimpanan bawaan yang digunakan. Nilai valid: com.aliyun.odps.CsvStorageHandler dan com.aliyun.odps.TsvStorageHandler. Parameter ini menentukan handler penyimpanan bawaan yang memproses file CSV dan TSV serta mendefinisikan cara membaca atau menulis file CSV dan TSV. Anda hanya perlu menentukan parameter ini berdasarkan kebutuhan bisnis Anda. Logika terkait diimplementasikan oleh sistem. Jika Anda menggunakan handler penyimpanan bawaan untuk mengekspor data, ekstensi nama file .csv atau .tsv secara otomatis ditambahkan ke nama file yang diekspor. Konfigurasi parameter ini sama dengan konfigurasi untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut, lihat Buat tabel eksternal OSS.

    '<property_name>'='<property_value>'

    Tidak

    property_name menentukan nama properti dan property_value menentukan nilai properti. Anda dapat menggunakan klausa ini dengan cara yang sama seperti Anda menggunakannya untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut tentang properti, lihat Buat tabel eksternal OSS.

    Ekspor data dari MaxCompute ke Hologres

    Parameter

    Diperlukan

    Deskripsi

    select_statement

    Tidak

    Klausa SELECT yang digunakan untuk menanyakan data yang ingin Anda masukkan ke direktori tujuan Hologres dari tabel sumber. Tabel sumber hanya bisa berupa tabel non-partisi. Untuk informasi lebih lanjut tentang klausa SELECT, lihat Sintaksis SELECT.

    table_name

    Tidak

    Anda dapat menggunakan nama tabel untuk menentukan data yang ingin Anda ekspor. Metode ekspor ini tidak menghasilkan pernyataan query secara otomatis. Oleh karena itu, tidak ada biaya yang dikeluarkan.

    external_location

    Ya

    Direktori Hologres ke mana Anda ingin mengekspor data. Nilai parameter ini berada dalam format 'jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/'. Untuk informasi lebih lanjut tentang direktori Hologres, lihat Buat tabel eksternal Hologres.

    StorageHandler

    Ya

    Nama handler penyimpanan bawaan yang digunakan. Setel nilainya menjadi com.aliyun.odps.jdbc.JdbcStorageHandler. Nilai tersebut menunjukkan bahwa tabel eksternal Hologres diakses menggunakan JdbcStorageHandler.

    '<property_name>'='<property_value>'

    Tidak

    property_name menentukan nama properti. property_value menentukan nilai properti. Saat Anda mengekspor data ke Hologres, Anda harus mengonfigurasi parameter berikut:

    • 'odps.properties.rolearn'='<ram_arn>': menentukan Alibaba Cloud Resource Name (ARN) dari peran RAM tertentu. ARN digunakan untuk autentikasi Security Token Service (STS). Untuk mendapatkan ARN dari peran RAM tertentu, Anda dapat melakukan langkah-langkah berikut: Masuk ke Konsol Resource Access Management (RAM). Pada halaman Roles, temukan peran RAM yang ARN-nya ingin Anda tanyakan dan klik nama peran RAM di kolom Role Name. Di halaman yang muncul, lihat ARN di bagian Basic Information.

    • 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver': menentukan driver yang digunakan untuk terhubung ke database Hologres. Setel nilainya menjadi org.postgresql.Driver.

    • 'odps.federation.jdbc.target.db.type'='holo': menentukan jenis database yang terhubung ke driver. Setel nilainya menjadi holo.

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

  • Contoh

    Ekspor data dari MaxCompute ke OSS

    Contoh ini menunjukkan cara mengekspor data dari tabel sale_detail di proyek MaxCompute ke OSS. Tabel sale_detail berisi data 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. Kemudian, buat direktori mc-unload/data_location/ di bucket OSS di wilayah oss-cn-hangzhou dan atur direktori OSS. Untuk informasi lebih lanjut tentang cara membuat bucket OSS, lihat Buat bucket.Bucket

      Direktori OSS berikut diatur berdasarkan bucket, wilayah, dan titik akhir:

      oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
    2. Masuk ke Klien MaxCompute dan eksekusi pernyataan UNLOAD untuk mengekspor data dari tabel sale_detail ke OSS. Contoh berikut diberikan:

      • Contoh 1: Ekspor data dari tabel sale_detail sebagai file CSV dan kemas file tersebut ke dalam file GZIP. Contoh pernyataan:

        -- Kendalikan jumlah file yang diekspor: Atur ukuran data yang dibaca oleh satu worker dari tabel MaxCompute. Unit: MB. Tabel MaxCompute dikompresi sebelum Anda mengekspornya. Ukuran data yang diekspor sekitar empat kali ukuran data sebelum ekspor.
        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');
        -- Pernyataan sebelumnya 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', region='china') di tabel sale_detail sebagai file TSV ke OSS dan kemas file tersebut ke dalam file GZIP.

        -- Kendalikan jumlah file yang diekspor: Atur ukuran data yang dibaca oleh satu worker dari tabel MaxCompute. Unit: MB. Tabel MaxCompute dikompresi sebelum Anda mengekspornya. Ukuran data yang diekspor sekitar empat kali ukuran data sebelum ekspor.
        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::139699392458****:role/AliyunODPSDefaultRole', 'odps.text.option.gzip.output.enabled'='true');

      'odps.text.option.gzip.output.enabled'='true' menentukan bahwa file yang diekspor dikompresi dalam file GZIP. Hanya format GZIP yang didukung.

    3. Masuk ke Konsol OSS untuk melihat hasil impor di direktori tujuan OSS.

      • Hasil untuk Contoh 1 adalah sebagai berikut.导入结果

      • Hasil untuk Contoh 2 adalah sebagai berikut.导入结果

    Ekspor data dari MaxCompute ke Hologres

    Contoh ini menunjukkan cara mengekspor data dari tabel data_test proyek MaxCompute ke Hologres. Tabel data_test berisi data berikut:

    +------------+------+
    | id         | name |
    +------------+------+
    | 3          | rgege |
    | 4          | Gegegegr |
    +------------+------+
    1. Buat tabel Hologres bernama mc_2_holo ke mana Anda ingin menulis data. Database tempat tabel tersebut milik bernama test. Anda dapat mengeksekusi pernyataan pembuatan tabel berikut di editor SQL Konsol HoloWeb. Untuk informasi lebih lanjut, lihat Hubungkan ke HoloWeb dan lakukan query. Contoh pernyataan:

      Catatan

      Tipe data bidang di tabel tempat Anda ingin menulis data harus sama dengan tipe data bidang di tabel MaxCompute. Untuk informasi lebih lanjut, lihat Pemetaan tipe data antara MaxCompute dan Hologres.

      CREATE TABLE mc_2_holo (id INT, name TEXT);
    2. Masuk ke Klien MaxCompute dan eksekusi pernyataan UNLOAD untuk mengekspor data dari tabel data_test ke Hologres. Contoh pernyataan:

      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;

      Hasil berikut dikembalikan:

      id	name
      4	Gegegegr
      3	rgege

Ekspor data dalam format sumber terbuka lainnya

  • Sintaksis

    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

    Diperlukan

    Deskripsi

    select_statement

    Tidak

    Klausa SELECT yang digunakan untuk menanyakan data yang ingin Anda masukkan ke direktori tujuan OSS dari tabel sumber. Tabel sumber bisa berupa tabel partisi atau tabel non-partisi. Untuk informasi lebih lanjut tentang klausa SELECT, lihat Sintaksis SELECT.

    table_name, pt_spec

    Tidak

    Anda dapat menggunakan nama tabel atau kombinasi nama tabel dan nama partisi untuk menentukan data yang ingin Anda ekspor. Metode ekspor ini tidak menghasilkan pernyataan query secara otomatis. Oleh karena itu, tidak ada biaya yang dikeluarkan. Nilai pt_spec berada dalam format (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...).

    external_location

    Ya

    Menentukan jalur OSS target tempat data yang diekspor disimpan. Formatnya adalah 'oss://<oss_endpoint>/<object>'. Untuk informasi lebih lanjut tentang jalur OSS, lihat Gunakan titik akhir yang mendukung IPv6 untuk mengakses OSS.

    serde_class

    Tidak

    Konfigurasi parameter ini sama dengan konfigurasi untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut, lihat Buat tabel eksternal OSS.

    '<property_name>'='<property_value>'

    Tidak

    property_name menentukan nama properti dan property_value menentukan nilai properti. Anda dapat menggunakan klausa ini dengan cara yang sama seperti Anda menggunakannya untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut tentang properti, lihat Buat tabel eksternal OSS.

    file_format

    Ya

    Format file yang diekspor, seperti ORC, PARQUET, RCFILE, SEQUENCEFILE, atau TEXTFILE. Konfigurasi parameter ini sama dengan konfigurasi untuk tabel eksternal MaxCompute. Untuk informasi lebih lanjut, lihat Buat tabel eksternal OSS.

    '<tbproperty_name>'='<tbproperty_value>'

    Tidak

    tbproperty_name menentukan nama properti dalam informasi tambahan tabel eksternal. tbproperty_value menentukan nilai properti dalam informasi tambahan tabel eksternal. Misalnya, Anda dapat mengekspor data sumber terbuka sebagai file dalam format kompresi SNAPPY atau LZO. Anda dapat mengonfigurasi 'mcfed.parquet.compression'='SNAPPY' atau 'mcfed.parquet.compression'='LZO'.

  • Contoh

    Contoh ini menunjukkan cara mengekspor data dari tabel sale_detail di proyek MaxCompute ke OSS. Tabel sale_detail berisi data 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. Kemudian, buat direktori mc-unload/data_location/ di bucket OSS di wilayah oss-cn-hangzhou dan atur direktori OSS. Untuk informasi lebih lanjut tentang cara membuat bucket OSS, lihat Buat bucket.Bucket

      Direktori OSS berikut diatur berdasarkan bucket, wilayah, dan titik akhir:

      oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
    2. Masuk ke Klien MaxCompute dan eksekusi pernyataan UNLOAD untuk mengekspor data dari tabel sale_detail ke OSS. Contoh berikut diberikan:

      • Contoh 1: Ekspor data dari tabel sale_detail sebagai file dalam format PARQUET dan kompres file menggunakan Snappy. Contoh pernyataan:

        -- Kendalikan jumlah file yang diekspor: Atur ukuran data yang dibaca oleh satu worker dari tabel MaxCompute. Unit: MB. Tabel MaxCompute dikompresi sebelum Anda mengekspornya. Ukuran data yang diekspor sekitar empat kali ukuran data sebelum ekspor.
        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', region='china') di tabel sale_detail sebagai file PARQUET ke OSS dan kompres file menggunakan Snappy. Contoh pernyataan:

        -- Kendalikan jumlah file yang diekspor: Atur ukuran data yang dibaca oleh satu worker dari tabel MaxCompute. Unit: MB. Tabel MaxCompute dikompresi sebelum Anda mengekspornya. Ukuran data yang diekspor sekitar empat kali ukuran data sebelum ekspor.
        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 FROMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
        WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::139699392458****:role/AliyunODPSDefaultRole') 
        STORED AS PARQUET 
        PROPERTIES('mcfed.parquet.compression'='SNAPPY');
    3. Masuk ke Konsol OSS untuk melihat hasil impor di direktori tujuan OSS.

      • Hasil untuk Contoh 1 adalah sebagai berikut.导入结果

      • Hasil untuk Contoh 2 adalah sebagai berikut.导入结果

      Catatan

      Jika data yang diekspor dikompresi menggunakan Snappy atau LZO, ekstensi nama file .snappy atau .lzo dari file yang diekspor tidak dapat ditampilkan.

Tentukan awalan untuk file yang diekspor dan tampilkan ekstensi nama file

Saat Anda mengeksekusi pernyataan UNLOAD untuk mengekspor data dari tabel MaxCompute sebagai file, Anda mungkin perlu menentukan awalan untuk file dan menampilkan ekstensi nama file dalam skenario bisnis tertentu. Anda dapat melakukan operasi berikut untuk menentukan awalan dan menampilkan ekstensi nama file.

  • Sintaksis

    • Gunakan ekstraktor bawaan untuk mengekspor file CSV atau TSV.

      -- Ekstraktor bawaan, ekspor CSV, TSV, dan format lainnya
      UNLOAD FROM  {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
      INTO 
      LOCATION <external_location> 
      [STORED BY <StorageHandler>]
      [WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)];
      • Anda dapat mengonfigurasi properti odps.external.data.prefix untuk menentukan awalan kustom. Nilainya dapat mencapai panjang hingga 10 karakter.

      • Anda dapat mengatur properti odps.external.data.enable.extension menjadi true untuk menampilkan ekstensi nama file.

      • Untuk informasi lebih lanjut tentang parameter lainnya, lihat Gunakan ekstraktor bawaan untuk mengekspor data (StorageHandler).

    • Ekspor file dalam format sumber terbuka, seperti ORC atau 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>')];
      • Anda dapat mengonfigurasi properti odps.external.data.prefix untuk menentukan awalan kustom. Nilainya dapat mencapai panjang hingga 10 karakter.

      • Anda dapat mengatur properti odps.external.data.enable.extension menjadi true untuk menampilkan ekstensi nama file.

      • Untuk informasi lebih lanjut tentang parameter lainnya, lihat Ekspor data dalam format sumber terbuka lainnya.

  • Deskripsi ekstensi nama file

    Format File

    SerDe

    Ekstensi

    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 TXT. Tambahkan awalan mf_ dan tampilkan ekstensi .txt.

      SET odps.sql.hive.compatible=true;
      SET odps.sql.split.hive.bridge=true;
      UNLOAD FROM (SELECT col_tinyint,col_binary FROM mf_fun_datatype LIMIT 1)
      INTO
      LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mfosscostfee/demo6/'
      STORED AS textfile
      PROPERTIES ('odps.external.data.prefix'='mf_', 'odps.external.data.enable.extension'='true');

      Lihat hasil ekspor di direktori tujuan OSS dari penyimpanan data yang ditentukan.

    • Ekspor file CSV. Tambahkan awalan mf_ dan tampilkan ekstensi .csv.

      SET odps.sql.hive.compatible=true;
      SET odps.sql.split.hive.bridge=true; 
      UNLOAD FROM (SELECT col_tinyint,col_binary FROM mf_fun_datatype LIMIT 2) 
      INTO 
      LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mfosscostfee/demo6/' 
      STORED BY 'com.aliyun.odps.CsvStorageHandler' 
      PROPERTIES ('odps.external.data.prefix'='mf_', 'odps.external.data.enable.extension'='true');

      Lihat hasil ekspor di direktori tujuan OSS dari penyimpanan data yang ditentukan.

Referensi

Jika Anda ingin mengimpor data dalam format CSV atau format sumber terbuka lainnya dari penyimpanan data eksternal ke MaxCompute, lihat LOAD.