在不提供.jar的情况下在远程集群上运行Flink作业



我有以下问题:我想在本地机器上的IntelliJ中创建Flink作业,并在位于VM中的远程集群上运行它。我使用了createRemoteEnvironment函数,但匿名类和lambda表达式需要jar文件(如果我没有遗漏任何内容的话(。有没有一种(或其他(方法可以在远程集群上运行Flink作业而不提供jar文件?下面的代码是我想在远程集群上运行的一个简单的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来运行需要依赖关系的代码。

相关内容

  • 没有找到相关文章

最新更新