Membuat plugin khusus dengan Oracle - Amazon Managed Workflows for Apache Airflow (MWAA)

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

Membuat plugin khusus dengan Oracle

Contoh berikut memandu Anda melalui langkah-langkah untuk membuat plugin khusus menggunakan Oracle untuk Amazon MWAA dan dapat dikombinasikan dengan plugin dan binari khusus lainnya di file plugins.zip Anda.

Versi

Prasyarat

Untuk menggunakan kode sampel di halaman ini, Anda memerlukan yang berikut:

Izin

  • Tidak diperlukan izin tambahan untuk menggunakan contoh kode di halaman ini.

Persyaratan

Untuk menggunakan kode contoh pada halaman ini, tambahkan dependensi berikut ke Anda. requirements.txt Untuk mempelajari selengkapnya, lihat Menginstal dependensi Python.

Apache Airflow v2
-c https://raw.githubusercontent.com/apache/airflow/constraints-2.0.2/constraints-3.7.txt cx_Oracle apache-airflow-providers-oracle
Apache Airflow v1
cx_Oracle==8.1.0 apache-airflow[oracle]==1.10.12

Contoh kode

Langkah-langkah berikut menjelaskan cara membuat DAG kode yang akan menguji plugin kustom.

  1. Di prompt perintah Anda, arahkan ke direktori tempat DAG kode Anda disimpan. Sebagai contoh:

    cd dags
  2. Salin isi contoh kode berikut dan simpan secara lokal sebagaioracle.py.

    from airflow import DAG from airflow.operators.python_operator import PythonOperator from airflow.utils.dates import days_ago import os import cx_Oracle DAG_ID = os.path.basename(__file__).replace(".py", "") def testHook(**kwargs): cx_Oracle.init_oracle_client() version = cx_Oracle.clientversion() print("cx_Oracle.clientversion",version) return version with DAG(dag_id=DAG_ID, schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag: hook_test = PythonOperator( task_id="hook_test", python_callable=testHook, provide_context=True )

Buat plugin kustom

Bagian ini menjelaskan cara mengunduh dependensi, membuat plugin kustom dan plugins.zip.

Unduh dependensi

Amazon MWAA akan mengekstrak konten plugins.zip ke dalam /usr/local/airflow/plugins setiap MWAA penjadwal Amazon dan wadah pekerja. Ini digunakan untuk menambahkan binari ke lingkungan Anda. Langkah-langkah berikut menjelaskan cara merakit file yang diperlukan untuk plugin kustom.

Tarik gambar wadah Amazon Linux
  1. Di command prompt Anda, tarik image container Amazon Linux, dan jalankan container secara lokal. Sebagai contoh:

    docker pull amazonlinux docker run -it amazonlinux:latest /bin/bash

    Prompt perintah Anda harus memanggil baris perintah bash. Sebagai contoh:

    bash-4.2#
  2. Instal fasilitas I/O asinkron asli Linux (libaio).

    yum -y install libaio
  3. Biarkan jendela ini terbuka untuk langkah selanjutnya. Kami akan menyalin file-file berikut secara lokal:lib64/libaio.so.1,,lib64/libaio.so.1.0.0. lib64/libaio.so.1.0.1

Unduh folder klien
  1. Instal paket unzip secara lokal. Sebagai contoh:

    sudo yum install unzip
  2. Buat oracle_plugin direktori. Sebagai contoh:

    mkdir oracle_plugin cd oracle_plugin
  3. Gunakan perintah curl berikut untuk mendownload instantclient-basic-linux.x64-18.5.0.0.0dbru.zip dari Oracle Instant Client Downloads untuk Linux x86-64 (64-bit).

    curl https://download.oracle.com/otn_software/linux/instantclient/185000/instantclient-basic-linux.x64-18.5.0.0.0dbru.zip > client.zip
  4. Buka zip client.zip file. Sebagai contoh:

    unzip *.zip
Ekstrak file dari Docker
  1. Dalam prompt perintah baru, tampilkan dan tuliskan ID kontainer Docker Anda. Sebagai contoh:

    docker container ls

    Prompt perintah Anda harus mengembalikan semua kontainer dan kontainerIDs. Sebagai contoh:

    debc16fd6970
  2. Di oracle_plugin direktori Anda, ekstrak lib64/libaio.so.1.0.1 file lib64/libaio.so.1lib64/libaio.so.1.0.0,, ke instantclient_18_5 folder lokal. Sebagai contoh:

    docker cp debc16fd6970:/lib64/libaio.so.1 instantclient_18_5/ docker cp debc16fd6970:/lib64/libaio.so.1.0.0 instantclient_18_5/ docker cp debc16fd6970:/lib64/libaio.so.1.0.1 instantclient_18_5/

Plugin kustom

Apache Airflow akan mengeksekusi isi file Python di folder plugin saat startup. Ini digunakan untuk mengatur dan memodifikasi variabel lingkungan. Langkah-langkah berikut menjelaskan kode sampel untuk plugin kustom.

  • Salin isi contoh kode berikut dan simpan secara lokal sebagaienv_var_plugin_oracle.py.

    from airflow.plugins_manager import AirflowPlugin import os os.environ["LD_LIBRARY_PATH"]='/usr/local/airflow/plugins/instantclient_18_5' os.environ["DPI_DEBUG_LEVEL"]="64" class EnvVarPlugin(AirflowPlugin): name = 'env_var_plugin'

Plugins.zip

Langkah-langkah berikut menunjukkan cara membuatplugins.zip. Isi contoh ini dapat dikombinasikan dengan plugin dan binari Anda yang lain menjadi satu plugins.zip file.

Zip isi direktori plugin
  1. Di prompt perintah Anda, arahkan ke oracle_plugin direktori. Sebagai contoh:

    cd oracle_plugin
  2. Zip instantclient_18_5 direktori di plugins.zip. Sebagai contoh:

    zip -r ../plugins.zip ./
  3. Anda akan melihat yang berikut di command prompt Anda:

    oracle_plugin$ ls client.zip instantclient_18_5
  4. Hapus client.zip file. Sebagai contoh:

    rm client.zip
Zip file env_var_plugin_oracle.py
  1. Tambahkan env_var_plugin_oracle.py file ke root plugins.zip. Sebagai contoh:

    zip plugins.zip env_var_plugin_oracle.py
  2. plugins.zip Anda sekarang harus menyertakan yang berikut:

    env_var_plugin_oracle.py instantclient_18_5/

Opsi konfigurasi aliran udara

Jika Anda menggunakan Apache Airflow v2, tambahkan core.lazy_load_plugins : False sebagai opsi konfigurasi Apache Airflow. Untuk mempelajari lebih lanjut, lihat Menggunakan opsi konfigurasi untuk memuat plugin di 2.

Apa selanjutnya?