簡體   English   中英

在 EMR 上使用 flink 紗線 session 運行光束管道

[英]Run beam pipeline with flink yarn session on EMR

我正在嘗試在 AWS EMR 上使用 flink 紗線 session 從 python SDK 運行基本字數光束管道。 我同時使用了 flink 運行器和便攜式運行器,並得到下面列出的兩個不同的錯誤。 這兩種跑步者的作業都顯示在 flink UI 中,並在我的筆記本電腦上使用本地 flink session 成功運行。

使用 FlinkRunner,作業作為 BeamApp-hadoop-0617202523-14894e58 運行並給出錯誤:

ERROR:root:java.lang.NoClassDefFoundError: Could not initialize class org.apache.beam.runners.core.construction.SerializablePipelineOptions

使用 PortableRunner,作業以 BeamApp-root-0617202248-36b0d306 運行(我相信這意味着它成功地從光束便攜式跑步者 docker 圖像提交作業)並給出錯誤:

ERROR:root:java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: Provider com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule not a subtype

我認為這些是依賴錯誤,並嘗試在 /usr/lib/flink/lib 目錄中獲取提到的 jars。 在應用程序啟動時記錄類路徑時,紗線容器日志列出了正確的 jars,但錯誤仍然存在。

Apache Beam 版本 2.22.0,flink 版本 1.10.0,emr 版本 5.30.0。

我在使用 Apache 光束 + AWS EMR + Flink 時遇到了類似的問題,我通過從 FlinkPipelineOptions.filesToStage 中排除 jackson-core、jackson-annotation 和 jackson-databind 依賴項解決了這個問題。

options.setFilesToStage(Arrays.stream(System.getProperty("java.class.path").split(":"))
   .filter(d -> !d.contains("com.fasterxml.jackson.core"))
   .filter(d -> Files.exists(Paths.get(d)))
   .collect(Collectors.toList()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM