Apache Livy 運算子

Apache Livy 是一種服務,可透過 REST 介面輕鬆與 Spark 叢集互動。它能夠輕鬆提交 Spark 工作或 Spark 程式碼片段、同步或非同步檢索結果,以及 Spark Context 管理,所有這些都透過簡單的 REST 介面或 RPC 客戶端函式庫完成。

LivyOperator

此運算子包裝了 Apache Livy 批次 REST API,允許將 Spark 應用程式提交到底層叢集。

tests/system/apache/livy/example_livy.py[原始碼]

    livy_java_task = LivyOperator(
        task_id="pi_java_task",
        file="/spark-examples.jar",
        num_executors=1,
        conf={
            "spark.shuffle.compress": "false",
        },
        class_name="org.apache.spark.examples.SparkPi",
    )

    livy_python_task = LivyOperator(task_id="pi_python_task", file="/pi.py", polling_interval=60)

    livy_java_task >> livy_python_task

您也可以透過將參數 deferrable 設定為 True,以可延遲模式執行此運算子。這將能有效利用 Airflow worker,因為工作狀態的輪詢會在觸發器上非同步進行。請注意,這需要您的 Airflow 部署中提供觸發器。

tests/system/apache/livy/example_livy.py[原始碼]

    livy_java_task_deferrable = LivyOperator(
        task_id="livy_java_task_deferrable",
        file="/spark-examples.jar",
        num_executors=1,
        conf={
            "spark.shuffle.compress": "false",
        },
        class_name="org.apache.spark.examples.SparkPi",
        deferrable=True,
    )

    livy_python_task_deferrable = LivyOperator(
        task_id="livy_python_task_deferrable", file="/pi.py", polling_interval=60, deferrable=True
    )

    livy_java_task_deferrable >> livy_python_task_deferrable

參考

如需更多資訊,請參閱 Apache Livy

這篇文章對您有幫助嗎?