Gunakan PyODPS untuk melakukan transformasi tingkat kolom (sekuens) serta mengontrol eksekusi kueri, termasuk caching dan eksekusi paralel asinkron.
Prosedur
-
Pastikan Anda telah membuat proyek MaxCompute.
-
Pastikan Anda telah membuat ruang kerja DataWorks. Topik ini menggunakan ruang kerja DataStudio dalam pratinjau publik sebagai contoh.
-
Di DataWorks, buat tabel
pyodps_iris.-
Masuk ke Konsol DataWorks dan pilih Wilayah di pojok kiri atas.
-
Pada halaman Workspaces, pada kolom Actions dari ruang kerja target, pilih .
-
Pada halaman Run Configuration, pilih Computing Resource dan Resource Group.
Kelompok sumber daya mungkin memerlukan beberapa menit untuk dibuat. Setelah itu, pada halaman Resource Groups, bind kelompok sumber daya tersebut ke ruang kerja Anda.
-
Pada node SQL MaxCompute, jalankan pernyataan berikut untuk membuat tabel
pyodps_iris.CREATE TABLE if not exists pyodps_iris ( sepallength DOUBLE comment 'Sepal length (cm)', sepalwidth DOUBLE comment 'Sepal width (cm)', petallength DOUBLE comment 'Petal length (cm)', petalwidth DOUBLE comment 'Petal width (cm)', name STRING comment 'Species' );
-
-
Unduh set data uji dan impor ke MaxCompute.
-
Unduh dan ekstrak dataset Iris flower, lalu ubah nama file
iris.datamenjadiiris.csv. -
Masuk ke Konsol DataWorks dan pilih Wilayah di pojok kiri atas.
-
Pada panel navigasi kiri, pilih .
-
Klik Go to Data Upload and Download.
-
Pada bilah navigasi kiri, klik ikon unggah
, lalu klik Data Upload.
-
-
Di DataStudio, buat node MaxCompute PyODPS 2. Masukkan kode contoh berikut dan klik Run.
from odps import DataFrame iris = DataFrame(o.get_table('pyodps_iris')) # Dapatkan sebuah kolom. print iris.sepallength.head(5) print iris['sepallength'].head(5) # Lihat tipe data kolom tersebut. print iris.sepallength.dtype # Ubah tipe data kolom tersebut. iris.sepallength.astype('int') # Lakukan komputasi. print iris.groupby('name').sepallength.max().head(5) print iris.sepallength.max() # Ubah nama kolom. print iris.sepalwidth.rename('speal_width').head(5) # Transformasi kolom sederhana. print (iris.sepallength + iris.sepalwidth).rename('sum_sepal').head(5) -
Buat node PyODPS bernama PyExecute dan jalankan kode berikut:
from odps import options from odps import DataFrame # Lihat Logview dari instans yang sedang berjalan. options.verbose = True iris = DataFrame(o.get_table('pyodps_iris')) iris[iris.sepallength < 5].exclude('sepallength')[:5].execute() my_logs = [] def my_loggers(x): my_logs.append(x) options.verbose_log = my_loggers iris[iris.sepallength < 5].exclude('sepallength')[:5].execute() print(my_logs) # Cache hasil Collection antara. cached = iris[iris.sepalwidth < 3.5].cache() print cached.head(3) # Eksekusi paralel asinkron. from odps.df import Delay delay = Delay() # Buat objek Delay. df = iris[iris.sepalwidth < 5].cache() # Ini membuat dependensi bersama. future1 = df.sepalwidth.sum().execute(delay=delay) # Langsung mengembalikan objek future tanpa memulai eksekusi. future2 = df.sepalwidth.mean().execute(delay=delay) future3 = df.sepalwidth.max().execute(delay=delay) delay.execute(n_parallel=3) print future1.result() print future2.result() print future3.result()