如何在 spark 2(java) 中创建广播变量?
how to create broadcast variable in spark 2(java)?
在 Spark 1 中,我们可以使用下面的代码创建一个 Spark 广播变量:
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);
我们如何使用如下所示的 API 在 Spark 2 中执行相同的操作?
SparkSession sc = SparkSession.setappName("SparkApp").getorcreate();
sc.sparkcontext().broadcast(T value, scala.reflect.ClassTag<T> evidence)
例如,如果你想广播名为 Test
的 class 它应该实现 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);
在 Spark 1 中,我们可以使用下面的代码创建一个 Spark 广播变量:
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);
我们如何使用如下所示的 API 在 Spark 2 中执行相同的操作?
SparkSession sc = SparkSession.setappName("SparkApp").getorcreate();
sc.sparkcontext().broadcast(T value, scala.reflect.ClassTag<T> evidence)
例如,如果你想广播名为 Test
的 class 它应该实现 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);