2017-08-26 37 views
0

在星火1我们可以使用下面的代码来创建一个星火广播变量:如何在spark 2(java)中创建广播变量?

SparkConf conf = new SparkConf(); 
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); 

JavaSparkContext sc = new JavaSparkContext("local", "JavaAPISuite", conf); 

ArrayList<Strin'valuesg> sampleList = new ArrayList<String>(); 
sampleList.add("value"); 

final Broadcast<ArrayList<String> broadcastVar = sc.broadcast(sampleList); 

我们怎样才能做到在星火2同样使用如下所示的API?

SparkSession sc = SparkSession.setappName("SparkApp").getorcreate(); 
sc.sparkcontext().broadcast(T value, scala.reflect.ClassTag<T> evidence$11) 
+0

https://spark.apache.org/docs/latest/rdd-programming- guide.html#broadcast-variables –

+0

hi cricket_007 ...链接显示Spark 1类型...不是Spark2的SparkSession –

+0

你是什么意思?你需要一个SparkContext来广播。您从Spark会话中获取上下文 –

回答

0

例如,如果你要广播类名为Test它应该实现java.io.Serializable然后你做:

import scala.reflect.ClassTag; 

ClassTag<Test> classTagTest = scala.reflect.ClassTag$.MODULE$.apply(Test.class); 
Broadcast<Test> broadcastTest = sc.sparkcontext().broadcast(new Test(), classTagTest); 
+0

谢谢@kofucii –