MaxCompute V2.0 memungkinkan Anda menggunakan tabel eksternal untuk mengakses layanan penyimpanan seperti Object Storage Service (OSS) dan Tablestore. MaxCompute Studio menyediakan templat kode untuk membantu Anda melakukan kueri terhadap data tidak terstruktur. Topik ini menjelaskan cara menggunakan MaxCompute Studio guna melakukan kueri terhadap data tidak terstruktur.
Prasyarat
Pastikan prasyarat berikut telah dipenuhi:
Proyek MaxCompute telah terhubung. Untuk informasi selengkapnya, lihat Mengelola koneksi proyek.
Modul Java MaxCompute telah dibuat. Untuk informasi selengkapnya, lihat Membuat modul Java MaxCompute.
Tulis program StorageHandler, Extractor, atau Outputer
Pada panel Project, klik kanan direktori kode sumber modul (yaitu ), lalu pilih .
-
Masukkan Name, pilih Extractor, StorageHandler, atau Outputer sebagai tipe, lalu tekan Enter.
-
Name: Nama kelas Java MaxCompute. Jika Package belum dibuat, masukkan packagename.classname untuk membuat Package secara otomatis.
-
Pilih Extractor, StorageHandler, atau Outputer sebagai tipe.
CatatanAnda dapat memilih Extractor, StorageHandler, atau Outputer sesuai kebutuhan bisnis Anda.
Extractor: kelas yang memungkinkan konfigurasi logika kustom untuk membaca data tidak terstruktur.
StorageHandler: kelas yang digunakan untuk mengimplementasikan logika yang didefinisikan dalam program Extractor atau Outputer.
Outputer: kelas yang memungkinkan konfigurasi logika kustom untuk menulis data tidak terstruktur.
-
Setelah kelas dibuat, kembangkan program Java di editor kode. Templat Java secara otomatis diisi dengan kerangka kode. Anda hanya perlu mengimplementasikan logika sesuai kebutuhan.
Debug program Extractor atau Outputer
Anda dapat merujuk pada contoh pengujian unit di direktori examples untuk menulis kasus uji.
import ...
public class ExtractorTest {
private String ambulanceFullSchema =
"vehicle:bigint;id:bigint;patient:bigint;calls:bigint;latitude:d...";
private String speechDataFullSchema = "sentence_snr:double;id:string";
@Test
public void testTextExtractor() throws Exception {
/**
* Setara dengan SQL berikut:
* CREATE EXTERNAL TABLE ambulance_data_external
* ( vehicle bigint, id bigint, patient bigint, calls bigint,
* Latitude double, Longitude double, time string, direction string)
* STORED BY 'com.aliyun.odps.udf.example.text.TextStorageHandler'
* LOCATION 'oss://.../data/ambulance_csv/'
* USING 'jar_file_name.jar';
*
* SELECT * FROM ambulance_data_external;
*/
Column[] externalTableSchema = UnstructuredUtils.parseSchemaString(
ambulanceFullSchema);
}
}
Paket dan unggah program
Setelah program selesai di-debug, kompres menjadi paket JAR dan unggah ke server MaxCompute sebagai resource. Untuk informasi selengkapnya, lihat Membuat paket program Java, mengunggah paket, dan membuat UDF MaxCompute.
Kueri data tidak terstruktur
-
Pada jendela tool Project, klik kanan scripts dan pilih .
-
Pada kolom Script Name, masukkan nama skrip. Dari daftar drop-down MaxCompute Project, pilih proyek target, lalu klik OK.
-
Di editor kode, masukkan pernyataan SQL untuk membuat tabel eksternal, lalu klik ikon
.--name:osd --author:liuyi --create time:2017-03-07 17:06 set odps.service.mode=off; CREATE EXTERNAL TABLE IF NOT EXISTS myun_src_external ( vehicleId bigint, recordId bigint, patientId bigint, calls bigint, locationLatitute double, locationLongtitue double, recordTime string, direction string ) STORED BY 'myun.MyStorageHandler' WITH SERDEPROPERTIES('delimiter'='|') LOCATION 'oss://oss-cn-hangzhou-zmf.aliyuncs.com/074799/demo/SampleData/CSV/src/' USING 'myun.jar'; -
Buat skrip SQL MaxCompute, masukkan pernyataan kueri berikut, lalu klik ikon
untuk menjalankan kueri terhadap data.set odps.task.major.version=unstructured_data; select * from myun_src_external where patientId > 25;
Referensi
Contoh: Membuat tabel eksternal OSS menggunakan extractor kustom