Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数据集应用为Spark中的广播_Java_Hadoop_Apache Spark_Spark Dataframe_Broadcast - Fatal编程技术网

Java 将数据集应用为Spark中的广播

Java 将数据集应用为Spark中的广播,java,hadoop,apache-spark,spark-dataframe,broadcast,Java,Hadoop,Apache Spark,Spark Dataframe,Broadcast,我有两个数据集,在尝试注册时,我需要注册一个数据集(较小的一个)作为广播,我可以使用广播功能 代码如下: JavaRDD<String> maps = ctx.textFile("C:\\Users\\sateesh\\Desktop\\country.txt"); Broadcast<JavaRDD<String>> broadcastVar = ctx.broadcast(maps); //Broadcast<Map<Integer, Stri

我有两个数据集,在尝试注册时,我需要注册一个数据集(较小的一个)作为广播,我可以使用广播功能

代码如下:

JavaRDD<String> maps = ctx.textFile("C:\\Users\\sateesh\\Desktop\\country.txt");
Broadcast<JavaRDD<String>> broadcastVar = ctx.broadcast(maps);
//Broadcast<Map<Integer, String>> broadcastVar = ctx.broadcast(map);
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(9);
JavaRDD<Integer> listrdd = ctx.parallelize(list);
JavaRDD<Object> mapr = listrdd.map(x -> broadcastVar.value());
System.out.println(mapr.collect());
javarddmaps=ctx.textFile(“C:\\Users\\sateesh\\Desktop\\country.txt”);
Broadcast broadcastVar=ctx.Broadcast(地图);
//广播VAR=ctx.广播(map);
列表=新的ArrayList();
增加第(1)款;
增加(2);
增加(9);
javarddlistrdd=ctx.parallelize(列表);
javarddmapr=listrdd.map(x->broadcastVar.value());
System.out.println(mapr.collect());

这里我无法获取
broadcastVar.value().get(x)
。如果我将任何手动地图注册为广播,则其工作正常,但如果是文本文件,则无法工作。

为了将任何数据广播到群集,它必须来自驱动程序。因此,
collect()
您的
rdd
并广播它

JavaRDD<String> rdd = ctx.textFile("C:\\Users\\sateesh\\Desktop\\country.txt");

Broadcast<List<String>> broadcastVar = ctx.broadcast(rdd.collect());
JavaRDD rdd=ctx.textFile(“C:\\Users\\sateesh\\Desktop\\country.txt”);
Broadcast broadcastVar=ctx.Broadcast(rdd.collect());
请注意
collect()
会将整个
rdd
带到驱动程序,它可能会引发异常。对于较小的数据,建议进行广播


broadcastBroadcastVar=ctx.Broadcast(maps.collect())?谢谢,正在工作。我们可以将rdd收集为rdd.collectAsMap吗?或者使用任何其他方式转换为地图而不是列表?
rdd.collectAsMap
也可以。
rdd.collectAsMap
仅适用于
pairdd
s。