MaxCompute tidak dapat secara langsung memanggil operasi API eksternal. Tutorial ini memberikan studi kasus lengkap tentang cara menggunakan database IP offline dan fungsi yang ditentukan pengguna (UDF) untuk menganalisis geolokasi alamat IP secara efisien di MaxCompute.
Latar Belakang
MaxCompute adalah lingkungan komputasi tertutup yang tidak dapat secara langsung memanggil operasi API eksternal melalui HTTP, seperti API basis data IP Taobao, untuk menanyakan geolokasi IP secara real-time. Berikut tiga solusi yang dapat digunakan untuk menganalisis geolokasi alamat IP di MaxCompute.
Solusi | Implementasi | Kelebihan | Kekurangan | Kesimpulan |
Ekspor data untuk kueri | Ekspor alamat IP yang akan dianalisis dari MaxCompute ke perangkat lokal, lalu gunakan skrip untuk memanggil API secara siklik untuk kueri. | Sederhana | Efisiensi rendah. Tunduk pada batas tingkat API (seperti 10 QPS), sehingga tidak cocok untuk data berskala besar. | Tidak direkomendasikan |
Kueri basis data lokal | Unduh basis data IP dan alamat IP yang akan dianalisis ke perangkat lokal, lalu lakukan pencocokan menggunakan program lokal. | Tidak ada batas tingkat API | Data terpisah dari gudang data dan tidak dapat dikaitkan dengan data bisnis lainnya (seperti tabel pesanan) di MaxCompute untuk analisis. | Tidak direkomendasikan |
Impor IP database untuk kueri | Unggah seluruh basis data alamat IP ke tabel MaxCompute, lalu gunakan UDF dalam SQL untuk melakukan kueri. |
| Memerlukan pembaruan manual berkala untuk basis data IP. | Direkomendasikan |
Kesimpulan: Solusi ketiga adalah satu-satunya yang dapat memenuhi kebutuhan untuk analisis berkinerja tinggi dan terintegrasi tinggi dalam kasus penggunaan big data. Tutorial ini merinci cara mengimplementasikan solusi tersebut.
Ikhtisar solusi
Solusi ini terdiri dari tiga modul utama:
Persiapan Data: Unggah file basis data alamat IP publik ke tabel MaxCompute sebagai referensi.
Pengembangan UDF: Buat UDF untuk mengonversi string alamat IP menjadi bilangan bulat, yang penting untuk pencocokan rentang yang efisien.
Analisis SQL: Tulis pernyataan SQL yang memanggil UDF untuk mencari alamat IP di tabel MaxCompute dan mendapatkan geolokasinya.
Persiapan
Buat ruang kerja yang belum memilih opsi Data Studio pratinjau publik. Tutorial ini menggunakan ruang kerja DataWorks dalam Basic mode.
Ikatkan kelompok sumber daya tanpa server ke ruang kerja.
Ikatkan sumber daya komputasi MaxCompute ke ruang kerja dan uji konektivitas jaringannya.
Di ruang kerja target, buat alur bisnis.
Prosedur
Siapkan basis data alamat IP
Contoh Basis Data: ipdata.csv.
Contoh Struktur Data:
Format datanya adalah
UTF-8.Empat bidang data pertama adalah alamat awal dan akhir dari rentang IP. Dua pertama dalam format bilangan bulat desimal, dan dua berikutnya dalam format dotted-decimal.
Unggah basis data alamat IP ke MaxCompute
Buat Tabel.
Pergi ke halaman DataStudio.
Masuk ke Konsol DataWorks. Di bilah navigasi atas, pilih wilayah yang diinginkan. Di panel navigasi sebelah kiri, pilih . Di halaman yang muncul, pilih ruang kerja yang diinginkan dari daftar drop-down dan klik Go to Data Development.
Di halaman DataStudio, klik kanan alur bisnis target dan pilih .
Di kotak dialog, pilih sumber daya komputasi yang Anda siapkan untuk Engine Instance, masukkan nama, dan klik Confirm.
Di halaman editor node, masukkan kode berikut:
-- Jika tabel bernama ipresource sudah ada, hapus terlebih dahulu. DROP TABLE IF EXISTS ipresource; -- Buat tabel untuk menyimpan alamat IP. CREATE TABLE IF NOT EXISTS ipresource ( start_ip BIGINT, -- Alamat awal dari rentang IP (dalam format bilangan bulat desimal). end_ip BIGINT, -- Alamat akhir dari rentang IP (dalam format bilangan bulat desimal). start_ip_arg STRING, -- Alamat awal dari rentang IP (dalam format string dotted-decimal, seperti "1.0.1.x"). end_ip_arg STRING, -- Alamat akhir dari rentang IP (dalam format string dotted-decimal, seperti "1.0.3.x"). country STRING, -- Nama negara. area STRING, -- Nama area (biasanya kosong atau sama dengan negara). city STRING, -- Nama kota (mungkin provinsi untuk beberapa data). county STRING, -- Nama distrik/kabupaten. isp STRING -- Penyedia layanan internet (seperti China Telecom, China Unicom, dan China Mobile). );Klik ikon
untuk menjalankan kode. Di kotak dialog Parameters, pilih kelompok sumber daya tanpa server yang Anda ikatkan dan klik Run. Tunggu Estimate MaxCompute Computing Cost selesai, lalu klik Run.
Unggah Data ke Tabel.
Klik ikon
di pojok kiri atas. Di halaman yang ditampilkan, klik .Klik ikon
di panel navigasi sebelah kiri.Klik Upload Data. Konfigurasikan parameter sesuai dengan deskripsi dalam tabel berikut.
Parameter
Deskripsi
Specify Data to Be Uploaded
Select File
Unggah file
ipdata.csv.Configure Destination Table
Compute Engine
MaxCompute
MaxComputeProject Name
Pilih proyek MaxCompute target.
Destination Table
Pilih tabel ipresource.
PentingJika tabel yang baru dibuat tidak ada dalam daftar, pergi ke dan segarkan metadata secara manual untuk
odps.<project_name>.ipresource.Resource Group
Pilih kelompok sumber daya tanpa server yang Anda siapkan.
Preview Data of Uploaded File
Klik Mapping by Order untuk memetakan data dalam file .csv ke bidang tabel ipresource.
Klik Upload Data.
Verifikasi bahwa Data Telah Diunggah.
Kembali ke editor node ODPS SQL di halaman DataStudio. Jalankan kueri SQL berikut. Jika Anda dapat melihat jumlah baris data dan data sampel, unggahan berhasil.
-- Kueri jumlah baris data dalam tabel. SELECT COUNT(*) FROM ipresource; -- Pratinjau 10 baris data pertama. SELECT * FROM ipresource limit 10;
Kembangkan UDF
Untuk mencari geolokasi alamat IP dalam SQL, Anda memerlukan UDF yang mengonversi string IP dotted-decimal (seperti '1.0.2xx.4x') menjadi bilangan bulat desimal yang dapat dibandingkan.
Buat Sumber Daya Python MaxCompute.
Di halaman DataStudio, klik kanan alur bisnis target dan pilih .
Di kotak dialog, masukkan nama, seperti
mc.py. Pilih Upload to MaxCompute dan klik Create.Di halaman editor node, masukkan kode berikut:
from functools import reduce from odps.udf import annotate @annotate("string->bigint") class IPtoInt(object): def evaluate(self, ip): try: return reduce(lambda x, y: (x << 8) + y, map(int, ip.split('.'))) except: return 0Klik ikon
.
Buat UDF MaxCompute.
Di halaman DataStudio, klik kanan alur bisnis target dan pilih .
Di kotak dialog, masukkan nama, seperti
ip2int, dan klik Create. Ini akan menjadi nama UDF dan tidak dapat diubah setelah pembuatan.Di halaman editor, konfigurasikan parameter. Parameter utama dijelaskan di bawah ini:
Untuk deskripsi parameter lebih lanjut, lihat Daftarkan fungsi MaxCompute.
Parameter
Deskripsi
Function Type
Biarkan pengaturan default Other Function.
Class Name
Kelas utama yang mengimplementasikan UDF. Contoh nilai:
mc.IPtoInt.CatatanKetika tipe sumber daya adalah Python, format nama kelas adalah Nama sumber daya Python.Nama kelas (tidak diperlukan .py dalam nama sumber daya).
Resources
Pilih file sumber daya
mc.pydari langkah sebelumnya.Klik ikon
untuk menyimpan fungsi.Klik ikon
. Di kotak dialog, masukkan deskripsi perubahan dan klik Confirm.
Temukan geolokasi IP menggunakan SQL
Kembali ke editor node ODPS SQL. Jalankan kueri SQL berikut:
-- Ganti ini dengan alamat IP aktual yang ingin Anda kueri. SELECT * FROM ipresource WHERE ip2int('1.0.2xx.4x') >= start_ip AND ip2int('1.0.2xx.4x') <= end_ip;Klik ikon
untuk menjalankan kode. Di kotak dialog Parameters, pilih kelompok sumber daya tanpa server yang Anda ikatkan dan klik Run. Tunggu Estimate MaxCompute Computing Cost selesai, lalu klik Run.Lihat hasil eksekusi. Anda dapat menemukan lokasi alamat IP.