Menerapkan fungsi yang ditentukan pengguna - Layanan Terkelola untuk Apache Flink

Amazon Managed Service untuk Apache Flink sebelumnya dikenal sebagai Amazon Kinesis Data Analytics untuk Apache Flink.

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

Menerapkan fungsi yang ditentukan pengguna

Fungsi yang ditentukan pengguna (UDFs) adalah titik ekstensi yang memungkinkan Anda memanggil logika yang sering digunakan atau logika khusus yang tidak dapat dinyatakan sebaliknya dalam kueri. Anda dapat menggunakan Python atau JVM bahasa seperti Java atau Scala untuk mengimplementasikan paragraf UDFs dalam buku catatan Studio Anda. Anda juga dapat menambahkan ke JAR file eksternal notebook Studio yang berisi UDFs diimplementasikan dalam JVM bahasa.

Saat mengimplementasikan class abstrak register JARs yang subclass UserDefinedFunction (atau kelas abstrak Anda sendiri), gunakan cakupan yang disediakan di Apache Maven, deklarasi compileOnly dependensi di Gradle, cakupan yang disediakanSBT, atau direktif yang setara dalam konfigurasi build proyek Anda. UDF Ini memungkinkan kode UDF sumber untuk dikompilasi terhadap FlinkAPIs, tetapi API kelas Flink tidak termasuk dalam artefak build. Lihat pom ini dari contoh UDF jar yang mematuhi prasyarat tersebut pada proyek Maven.

Untuk menggunakan konsol untuk menambahkan UDF JAR file ke buku catatan Studio Anda, ikuti langkah-langkah berikut:

  1. Unggah UDF JAR file Anda ke Amazon S3.

  2. Di bagian AWS Management Console, pilih opsi Custom create untuk membuat notebook Studio Anda.

  3. Ikuti alur kerja pembuatan notebook Studio hingga Anda sampai di langkah Konfigurasi.

  4. Di bagian User-defined functions (Fungsi yang ditetapkan pengguna), pilih Add user-defined function (Tambahkan fungsi yang ditetapkan pengguna).

  5. Tentukan lokasi Amazon S3 JAR file atau file yang memiliki implementasi ZIP file Anda. UDF

  6. Pilih Simpan perubahan.

Untuk menambahkan UDF JAR saat Anda membuat buku catatan Studio baru menggunakan CreateApplicationAPI, tentukan JAR lokasi dalam tipe CustomArtifactConfiguration data. Untuk menambahkan UDF JAR ke buku catatan Studio yang ada, panggil UpdateApplicationAPIoperasi dan tentukan JAR lokasi dalam tipe CustomArtifactsConfigurationUpdate data. Atau, Anda dapat menggunakan AWS Management Console untuk menambahkan UDF JAR file ke notebook Studio Anda.

Pertimbangan dengan fungsi yang ditentukan pengguna

  • Managed Service untuk Apache Flink Studio menggunakan terminologi Apache Zeppelin dimana notebook adalah contoh Zeppelin yang dapat berisi beberapa catatan. Setiap catatan kemudian dapat berisi beberapa paragraf. Dengan Managed Service for Apache Flink Studio, proses interpreter dibagikan di semua catatan di buku catatan. Jadi jika Anda melakukan registrasi fungsi eksplisit menggunakan createTemporarySystemFungsi dalam satu catatan, hal yang sama dapat direferensikan apa adanya di catatan lain dari buku catatan yang sama.

    Operasi Deploy sebagai aplikasi bekerja pada catatan individual dan tidak semua catatan di notebook. Saat Anda melakukan penerapan sebagai aplikasi, hanya konten catatan aktif yang digunakan untuk menghasilkan aplikasi. Registrasi fungsi eksplisit apa pun yang dilakukan di notebook lain bukan merupakan bagian dari dependensi aplikasi yang dihasilkan. Selain itu, selama Deploy sebagai opsi aplikasi pendaftaran fungsi implisit terjadi dengan mengubah nama kelas utama JAR ke string huruf kecil.

    Misalnya, jika TextAnalyticsUDF adalah kelas utama untuk UDFJAR, maka pendaftaran implisit akan menghasilkan nama textanalyticsudf fungsi. Jadi jika pendaftaran fungsi eksplisit di catatan 1 Studio terjadi seperti berikut ini, maka semua catatan lain di buku catatan itu (katakanlah catatan 2) dapat merujuk fungsi dengan nama myNewFuncNameForClass karena penerjemah bersama:

    stenv.createTemporarySystemFunction("myNewFuncNameForClass", new TextAnalyticsUDF())

    Namun selama penerapan sebagai operasi aplikasi pada catatan 2, pendaftaran eksplisit ini tidak akan disertakan dalam dependensi dan karenanya aplikasi yang diterapkan tidak akan berfungsi seperti yang diharapkan. Karena pendaftaran implisit, secara default semua referensi ke fungsi ini diharapkan bersama textanalyticsudf dan tidakmyNewFuncNameForClass.

    Jika ada kebutuhan untuk pendaftaran nama fungsi kustom maka catatan 2 itu sendiri diharapkan berisi paragraf lain untuk melakukan pendaftaran eksplisit lainnya sebagai berikut:

    %flink(parallelism=l) import com.amazonaws.kinesis.udf.textanalytics.TextAnalyticsUDF # re-register the JAR for UDF with custom name stenv.createTemporarySystemFunction("myNewFuncNameForClass", new TextAnalyticsUDF())
    %flink. ssql(type=update, parallelism=1) INSERT INTO table2 SELECT myNewFuncNameForClass(column_name) FROM table1 ;
  • Jika Anda UDF JAR menyertakan FlinkSDKs, maka konfigurasikan proyek Java Anda sehingga kode UDF sumber dapat dikompilasi terhadap FlinkSDKs, tetapi SDK kelas Flink sendiri tidak termasuk dalam artefak build, misalnya. JAR

    Anda dapat menggunakan provided cakupan di Apache Maven, deklarasi compileOnly dependensi di Gradle, provided scope inSBT, atau direktif yang setara dalam konfigurasi build project mereka. UDF Anda dapat merujuk ke pom ini dari contoh UDF toples, yang menganut prasyarat seperti itu pada proyek maven. Untuk step-by-step tutorial selengkapnya, lihat Terjemahkan, edit, dan analisis data streaming menggunakan SQL fungsi dengan Amazon Managed Service untuk Apache Flink, Amazon Translate, dan Amazon Comprehend.