Panggil fungsi yang ditetapkan pengguna dari Pig - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Panggil fungsi yang ditetapkan pengguna dari Pig

Pig menyediakan kemampuan untuk memanggil fungsi yang ditetapkan pengguna (UDFS) dari dalam skrip Pig. Anda dapat melakukan ini untuk menerapkan pengolahan kustom untuk digunakan dalam script Pig Anda. Bahasa yang saat ini didukung adalah Java, Python/Jython, dan JavaScript (meskipun JavaScript dukungan masih eksperimental.)

Bagian berikut menjelaskan cara mendaftarkan fungsi Anda dengan Pig sehingga Anda dapat memanggil mereka baik dari shell Pig atau dari dalam script Pig. Untuk informasi selengkapnya tentang penggunaan UDFS dengan Pig, lihat dokumentasi Pig untuk versi Pig Anda.

Panggil file JAR dari Pig

Anda dapat menggunakan file JAR kustom dengan Pig menggunakan REGISTER perintah dalam skrip Pig Anda. File JAR lokal atau sistem file remote seperti Amazon S3. Ketika script Pig berjalan, Amazon EMR download file JAR secara otomatis ke node master dan kemudian upload file JAR ke Hadoop didistribusikan cache. Dengan cara ini, file JAR secara otomatis digunakan yang diperlukan oleh semua contoh dalam cluster.

Untuk menggunakan file JAR dengan Pig
  1. Upload file JAR kustom Anda ke Amazon S3.

  2. Gunakan perintah REGISTER dalam script Pig Anda untuk menentukan bucket di Amazon S3 dari file JAR kustom.

    REGISTER s3://mybucket/path/mycustomjar.jar;

Panggil Python/Jython script dari Pig

Anda dapat mendaftar script Python dengan Pig dan kemudian memanggil fungsi dalam script dari shell Pig atau dalam script Pig. Anda melakukan ini dengan menentukan lokasi skrip dengan register kata kunci.

Karena ditulis dalam bahasa Java, Pig menggunakan mesin skrip Jython untuk mengurai skrip Python. Untuk informasi lebih lanjut tentang Jython, kunjungi http://www.jython.org/.

Untuk memanggil skrip Python/Jython dari Pig
  1. Menulis script Python dan meng-upload script ke lokasi di Amazon S3. Ini harus berupa bucket yang dimiliki oleh akun yang sama yang menciptakan kluster Pig, atau yang memiliki izin yang ditetapkan sehingga akun yang membuat kluster dapat mengaksesnya. Dalam contoh ini, script diunggah ke s3: //mybucket/pig/python.

  2. Mulai cluster Pig. Jika Anda mengakses Pig dari shell Grunt, menjalankan cluster interaktif. Jika Anda menjalankan perintah Pig dari script, mulai cluster Pig scripted. Contoh ini dimulai cluster interaktif. Untuk informasi selengkapnya tentang cara membuat kluster Pig, lihat Kirim hasil karya Pig.

  3. Untuk cluster interaktif, menggunakan SSH untuk terhubung ke node master dan menjalankan shell Grunt. Untuk informasi selengkapnya, lihat SSH ke node master.

  4. Jalankan shell Grunt untuk Pig dengan mengetik pig pada baris perintah:

    pig
  5. Daftarkan perpustakaan Jython dan script Python Anda dengan Pig menggunakan register kata kunci pada prompt perintah Grunt, seperti yang ditunjukkan pada perintah berikut, di mana Anda akan menentukan lokasi script Anda di Amazon S3:

    grunt> register 'lib/jython.jar'; grunt> register 's3://mybucket/pig/python/myscript.py' using jython as myfunctions;
  6. Memuat data input. Contoh berikut beban masukan dari lokasi Amazon S3:

    grunt> input = load 's3://mybucket/input/data.txt' using TextLoader as (line:chararray);
  7. Anda sekarang dapat memanggil fungsi dalam skrip Anda dari dalam Pig dengan merujuknya menggunakan myfunctions:

    grunt> output=foreach input generate myfunctions.myfunction($1);