將 部署為具有持久狀態的應用程式 - 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或 Scala 和 的組合SQL。我們目前不支援 Python 和 Scala 搭配 使用 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 SQL、 PyFlink 或 Flink Scala),這些程式碼已啟用,才能執行應用程式部署成功。

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

  • 如果您要部署為具有持久狀態的應用程式,VPC則必須具有網際網路存取權。如果您的 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陳述式 (USECREATEALTERDROPSETRESET) 必須在 DML(INSERT) 陳述式之前。這是因為段落中的DML陳述式必須以單一 Flink 任務一起提交。

  • 其中應該有一個段落包含DML陳述式。這是因為,對於此功能 deploy-as-application,我們僅支援將單一任務提交至 Flink。

如需詳細資訊和範例,請參閱使用 Amazon Managed Service for Apache Flink、Amazon Translate 和 Amazon Comprehend SQL的函數來翻譯、編輯和分析串流資料