gpt4 book ai didi

apache-flink - 如何使变量对 Apache Flink 中的所有 TaskManager 可用?

转载 作者:行者123 更新时间:2023-12-04 05:13:58 24 4
gpt4 key购买 nike

我需要在我的程序中设置一个值列表,并在所有任务管理器中访问它们。目前,我在主类中声明了一个公共(public)字段并设置了值。稍后在我的程序中,它将在远程集群中运行,我想在所有任务管理器中访问这个变量。这是我的示例代码。但是似乎存在问题:没有任何编译或运行时错误,任务管理器无法使用这些值。

public class myMainClass {
public static ArrayList<String> mykey = new ArrayList<String>();

public static void main(String[] args) throws Exception {
// assign value to the variable
partitionedData = partitionedData.partitionCustom(new MyPartitioner(myKey), 2);
}
}

public static class MyPartitioner implements Partitioner<String> {
public String [] partitionKeys;
public static ArrayList<String> mykey;
public MyPartitioner(ArrayList<String> mykey) {
this.mykey = mykey;
}

@Override
public int partition(String key, int numPartitions) {
for (int i=0 ; i< numParalell-1 ; i++) {
if(mykey.get(i).compareToIgnoreCase(key) > 0)
return i;
}

return numParalell-1 ;
}
}

最佳答案

我会将 mykey 列表作为构造函数参数传递给 MyPartitioner 类。

您的代码如下所示:

public class myMainClass {
public static void main(String[] args) throws Exception {
ArrayList<String> mykey = new ArrayList<String>();
// assign value to the vaiable
partitionedData = partitionedData.partitionCustom(new MyPartitioner(mykey), 2);
}
}

public static class MyPartitioner implements Partitioner<String> {
private final ArrayList<String> mykey;
public String [] partitionKeys;

public MyPartitioner(ArrayList<String> mykey) {
this.mykey = mykey;
}

@Override
public int partition(String key, int numPartitions) {
for (int i=0 ; i< numParalell-1 ; i++) {
if(mykey.get(i).compareToIgnoreCase(key) > 0)
return i;
}

return numParalell-1 ;
}
}

关于apache-flink - 如何使变量对 Apache Flink 中的所有 TaskManager 可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34596005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com