我正在从Spark 1.6迁移到2.3。
https://spark.apache.org/docs/2.3.1/tuning.html#data-serialization
val conf = new SparkConf().setMaster(...).setAppName(...)
conf.registerKryoClasses(Array(classOf[MyClass1], classOf[MyClass2]))
val sc = new SparkContext(conf)
问题是。。。Spark 2+指令中的其他任何地方都表明
SparkSession
SparkContext
应该通过了
spark.sparkContext
因此,现在我使用以下代码(并从代码中删除了conf、sc等的任何痕迹)。。。
val spark = SparkSession.builder.appName("myApp").getOrCreate()
我的问题
:如果我不使用Kryo,我在哪里注册类
SparkConf
或
SparkContext
spark.kryo.classesToRegister
在这里:
https://spark.apache.org/docs/2.3.1/configuration.html#compression-and-serialization
我有一个相当广泛的
conf.json
设置
spark-defaults.conf
https://spark.apache.org/docs/2.3.1/api/scala/index.html#org.apache.spark.sql.SparkSession
这让我觉得我可以做如下的事情来增强我的记忆力
spark-defaults.conf格式
val spark =
SparkSession
.builder
.appName("myApp")
.config("spark.kryo.classesToRegister", "???")
.getOrCreate()
但这是什么
???
如果我想注册
org.myorg.myapp.{MyClass1, MyClass2, MyClass3}
? 我找不到这种用法的例子。
会是:
.config("spark.kryo.classesToRegister", "MyClass1,MyClass2,MyClass3")
.config("spark.kryo.classesToRegister", "class org.myorg.mapp.MyClass1,class org.myorg.mapp.MyClass2,class org.myorg.mapp.MyClass3")
或者别的什么?
当我尝试在spark shell中通过
spark.conf.set("spark.kryo.classesToRegister", "any,any2,any3")
any,any2,any3
.
any
以下每种格式
-
“org.myorg.myapp.myclass”
-
-
“类org.myorg.myapp.myclass”