簡體   English   中英

在不提供 .jar 的情況下在遠程集群上運行 Flink 作業

[英]Run a Flink job on a remote cluster without providing a .jar

我有以下問題:我想在本地機器上的 IntelliJ 中創建一個 Flink 作業,並在位於 VM 中的遠程集群上運行它。 我使用了createRemoteEnvironment函數,但匿名類以及 lambda 表達式需要 jar 文件(如果我沒有遺漏任何東西)。 是否有(或另一種)方法可以在不提供 jar 文件的情況下在遠程集群上運行 Flink 作業? 下面的代碼是我想在遠程集群上運行的一個簡單的 Flink 作業(沒有 jar)。

public static void main(String[] args) throws Exception {
    StreamExecutionEnvironment env = StreamExecutionEnvironment.createRemoteEnvironment("192.168.56.101", 6123);

    DataStream<Tuple2<String, Integer>> dataStream = env
        .socketTextStream("192.168.56.102", 8080)
        .flatMap((String sentence, Collector<Tuple2<String, Integer>> out) ->
            {
                for (String word: sentence.split(" ")) {
                    out.collect(new Tuple2<String, Integer>(word, 1));
                }
            });


    // Alternative approach with an anonymous class
    /*DataStream<Tuple2<String, Integer>> dataStream = env
        .socketTextStream("localhost", 8080)
        .flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
        @Override
        public void flatMap(String sentence, Collector<Tuple2<String, Integer>> out) 
        throws Exception {
            for (String word: sentence.split(" ")) {
                out.collect(new Tuple2<String, Integer>(word, 1));
            }
        }
    });*/

    dataStream.print();

    env.execute("Window WordCount");
}

謝謝你的幫助!

根據這里的描述,錯誤可能不太直觀,但它本質上意味着您需要一個依賴項。

從概念上講,這意味着您需要提供依賴項。

這通常是通過將它放在一個罐子里來完成的。

因此,基於依賴項的一般工作方式,我認為答案是您確實必須提供 Jar 來運行需要依賴項的代碼。

暫無
暫無

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

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