部署為具有持久狀態的應用程式 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink 之前稱為 Amazon Kinesis Data Analytics for Apache Flink。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

部署為具有持久狀態的應用程式

您可以建立程式碼並將其匯出到 Amazon S3。您可以將在筆記中撰寫的程式碼升級為持續執行的串流處理應用程式。在 Managed Service for Apache Flink 上執行 Apache Flink 應用程式有兩種模式:使用 Studio 筆記本,您可以互動方式開發程式碼、即時檢視程式碼結果,並在筆記中以視覺化方式呈現。您將筆記部署為在串流模式下執行後,Managed Service for Apache Flink 可以建立一個持續執行的應用程式、從來源讀取資料、寫入目的地、讓應用程式維持長時間執行狀態,以及根據來源串流的輸送量自動擴展資源。

注意

應用程式的程式碼匯出到的 S3 儲存貯體必須與 Studio 筆記本位於相同的區域。

只有在符合下列條件的情況下,才能部署 Studio 筆記本的筆記:

  • 段落必須按順序排列。當您部署應用程式時,註解中的所有段落都會依序執行 (left-to-right, top-to-bottom),如同它們出現在您的記事中一樣。您可以透過在筆記中選擇執行所有段落來檢查此順序。

  • 你的代碼是 Python 和SQL或斯卡拉和SQL. 我們目前不支持 Python 和斯卡拉在一起 deploy-as-application。

  • 您的筆記必須只包含下列解譯器:%flink%flink.ssql%flink.pyflink%flink.ipyflink%md

  • 不支援使用 Zeppelin 內容物件 z。不傳回任何結果的方法不會執行任何動作,除記錄警告之外。其他方法將引發 Python 例外狀況或無法在 Scala 中編譯。

  • 筆記必須產生單一 Apache Flink 作業。

  • 不支援將具有動態資料表的筆記部署為應用程式。

  • %md (Markdown) 段落在部署為應用程式時會略過,因為這些段落預期會包含人類可讀的文件,不適合作為產生的應用程式的一部分執行。

  • 部署為應用程式時,將會略過不在 Zeppelin 中執行的停用段落。即使停用的段落使用不相容的解譯器 (例如含有%flink and %flink.ssql 解譯器的筆記中的 %flink.ipyflink),在將筆記部署為應用程式時,仍會略過該解譯器,並且不會產生錯誤。

  • 至少必須存在一個含有原始程式碼 (Flink PyFlink 或 Flink Scala) 的段落SQL,這些段落必須啟用此段落,才能成功執行應用程式部署。

  • 在某個段落內的解譯器指令中設定平行處理 (例如 %flink.ssql(parallelism=32)) 將在從筆記部署的應用程式中略過。相反地,您可以透過更新已部署的應用程式 AWS Management Console, AWS Command Line Interface 或 AWS API根據應用程式所需的平行處理原則層級變更平行處理原則和/或 ParallelismPerKPU設定,或者您可以為已部署的應用程式啟用自動調度資源。

  • 如果您部署為具有持久狀態的應用程序,則VPC必須具有 Internet 訪問權限。如果您VPC沒有網際網路連線,請參閱在沒有網際網路存取的情況下部署為VPC具有持久狀態的應用程式

Scala/Python 條件

  • 在 Scala 或 Python 程式碼中,使用 Blink 規劃器 (對於 Scala,是 senvstenv;對於 Python,是 s_envst_env),而不是較舊的「Flink」規劃器 (對於 Scala,是 stenv_2;對於 Python,是 st_env_2)。Apache Flink 專案建議在生產用例中使用 Blink 規劃器,這是 Zeppelin 和 Flink 中的預設規劃器。

  • 您的 Python 段落不得使用 shell 調用/分配使用!IPython魔術命令,例如%timeit%conda在註釋中將其部署為應用程序。

  • 您不能使用 Scala 案例類別作為傳遞給高階資料流程運算子 (如 mapfilter) 的函數的參數。有關 Scala 案例類的信息,請參閱 Scala 文檔CASECLASSES中的。

SQL標準

  • 不允許使用簡單的SELECT陳述式,因為沒有相當於段落的輸出部分可以傳送資料。

  • 在任何給定段落中,DDL陳述式 (USECREATEALTER、、DROPSETRESET) 必須在 DML (INSERT) 陳述式之前。這是因為段落中的DML陳述式必須一起提交為單一 Flink 工作。

  • 最多應該有一個段落中有DML陳述。這是因為,對於此 deploy-as-application 功能,我們只支持向 Flink 提交單個作業。

如需詳細資訊和範例,請參閱使用具有適用於 Apache Flink、Amazon Translate 和亞馬遜 Amazon Comprehend 的亞馬遜受管服務的SQL函數來 Amazon Translate、編修和分析串流資料。