Saat membangun danau data (data lakehouse), Anda perlu membuat proyek eksternal untuk mengaitkannya dengan kluster Hadoop, Data Lake Formation (DLF), atau Object Storage Service (OSS). Topik ini menjelaskan cara mengelola proyek eksternal dan tabel di dalamnya menggunakan pernyataan SQL dalam berbagai skenario, seperti menanyakan atau memperbarui data tabel.
Informasi latar belakang
Setelah membuat proyek eksternal di halaman Integrasi Danau dan Gudang (Data Lakehouse) pada konsol DataWorks, Anda dapat mengelola proyek tersebut menggunakan pernyataan SQL dalam skenario berikut:
Kelola proyek eksternal berdasarkan DLF dan OSS
Setelah membuat proyek eksternal, Anda harus terhubung ke proyek tersebut menggunakan klien MaxCompute dan masuk ke Proyek MaxCompute tempat proyek eksternal dipetakan. Dengan cara ini, Anda dapat mengelola data atau tabel dari proyek eksternal melalui Proyek MaxCompute.
Saat merujuk ke tabel di proyek eksternal, Anda harus menentukan tabel dalam format nama_proyek_eksternal.nama_tabel dalam pernyataan SQL. Anda tidak diizinkan membuat tabel baru di proyek eksternal.
Masukkan data ke dalam tabel.
Masukkan data ke dalam tabel non-partisi.
-- Masuk ke Proyek MaxCompute tempat proyek eksternal dipetakan, bukan ke proyek eksternal. use doc_test_prod; -- Masukkan data ke dalam tabel non-partisi. insert into table ext_mcdlf_ddl.ddl_test values(1,"ddl_test_1");Masukkan data ke dalam tabel partisi.
-- Masuk ke Proyek MaxCompute tempat proyek eksternal dipetakan. use doc_test_prod; -- Masukkan data ke dalam tabel partisi. insert overwrite table ext_mcdlf_ddl.range_ptstring_ptint partition (pt1 = 'ds1', pt2=2) values (4, 'val4'), (5, 'val5');
Lihat informasi tentang tabel di proyek eksternal.
-- Masuk ke Proyek MaxCompute tempat proyek eksternal dipetakan. use doc_test_prod; -- Lihat tabel di proyek eksternal. show tables in doc_test_prod; -- Lihat skema tabel ext_mcdlf_ddl.ddl_test. desc extended ext_mcdlf_ddl.ddl_test;Tanyakan data tabel di proyek eksternal.
-- Masuk ke Proyek MaxCompute tempat proyek eksternal dipetakan. use doc_test_prod; -- Tanyakan data di tabel non-partisi bernama ext_mcdlf_ddl.ddl_test. select * from ext_mcdlf_ddl.ddl_test limit 10; -- Tanyakan data di tabel partisi bernama ext_mcdlf_ddl.range_ptstring_ptint. select * from ext_mcdlf_ddl.range_ptstring_ptint where pt1='ds1';
Dalam beberapa skenario khusus, Anda harus menambahkan parameter saat mengeksekusi pernyataan SQL. Contohnya:
-- Jika versi Optimized Row Columnar (ORC) lebih baru dari ORC-135, tambahkan konfigurasi berikut: set odps.ext.oss.orc.native=true; -- Aktifkan edisi tipe data kompatibel Hive. MaxCompute hanya mendukung sintaksis Hive setelah Anda mengaktifkan edisi tipe data kompatibel Hive. set odps.sql.hive.compatible=true; -- Tulis data ke OSS menggunakan fitur unggah multipart. set odps.sql.unstructured.oss.commit.mode=true; -- Jalankan perintah berikut untuk mengaktifkan fitur unggah multipart untuk seluruh proyek. setproject odps.sql.unstructured.oss.commit.mode=true;Untuk informasi lebih lanjut tentang sintaksis SQL MaxCompute umum, lihat Operasi Tabel dan Masukkan atau Perbarui Data ke dalam Tabel atau Partisi Statis (INSERT INTO dan INSERT OVERWRITE).
Anda dapat menambahkan perintah SET ke file odps_config.ini sehingga tidak perlu memasukkan perintah setiap kali mengelola proyek eksternal.
Untuk informasi lebih lanjut tentang fitur unggah multipart, lihat Unggah Multipart.
Kelola proyek eksternal berdasarkan sumber data Hadoop eksternal
Eksekusi pernyataan berikut untuk menanyakan data tabel Hive dari sumber data Hadoop eksternal.
-- Masuk ke Proyek MaxCompute tempat proyek eksternal dipetakan. Anda tidak dapat menjalankan pekerjaan di proyek eksternal.
use <main_project_name>;
-- Set odps.sql.hive.compatible menjadi true. Jika Anda ingin mengakses tabel Alibaba Cloud E-MapReduce (EMR), Anda harus mengonfigurasi properti ini. Jika Anda ingin mengakses tabel MaxCompute, Anda tidak perlu mengonfigurasi properti ini.
set odps.sql.hive.compatible=true;
-- Opsional. Tentukan nama pengguna yang digunakan untuk mengakses sumber data Hadoop.
set odps.external.hadoop.user=<hadoop_name>;
-- Baca data dari tabel Hive.
select * from <my_hive_table> limit 10;Anda tidak dapat mengeksekusi pernyataan DDL pada tabel atau data proyek eksternal menggunakan Proyek MaxCompute tempat proyek eksternal dipetakan. Pernyataan DDL yang digunakan untuk menambahkan atau menghapus partisi dari tabel merupakan pengecualian. Untuk informasi lebih lanjut tentang pernyataan SQL DDL, lihat Ikhtisar MaxCompute SQL.
Anda dapat menambahkan perintah SET set.odps.sql.hive.compatible=true dan set.odps.external.hadoop.user=<hadoop_name> ke file odps_config.ini sehingga tidak perlu memasukkan perintah setiap kali mengelola proyek eksternal.
Buat tabel dengan skema yang sama dengan tabel di sumber data eksternal
Jika ingin membuat tabel dengan skema yang sama dengan tabel di sumber data eksternal, Anda dapat menjalankan perintah create table...like untuk mereplikasi skema tabel di sumber data eksternal. Contoh pernyataan:
Untuk informasi lebih lanjut tentang perintah create table...like, lihat Operasi Tabel.
-- Buat tabel.
create table from_exe_tbl like external_project.testtbl;
-- Tabel from_exe_tbl yang Anda buat memiliki skema yang sama dengan tabel external_project.testtbl.
Kedua tabel tersebut memiliki atribut yang sama, seperti nama kolom, komentar kolom, dan komentar tabel, kecuali siklus hidup. Namun, data di tabel external_project.testtbl tidak direplikasi ke tabel from_exe_tbl.
-- Tanyakan data tabel.
SELECT * from from_exe_tbl;
-- Lihat skema tabel.
desc from_exe_tbl;Referensi
Untuk informasi lebih lanjut tentang cara memberikan izin kepada pengguna lain pada proyek eksternal atau tabel di proyek eksternal, lihat Berikan Izin kepada Pengguna Lain pada Proyek Eksternal.