【发布时间】:2018-03-14 06:15:58
【问题描述】:
Kryo 通过高效的序列化方法帮助提高 Spark 应用程序的性能。
我想知道,如果 Kryo 对 SparkSQL 有帮助,我应该如何使用它。
在 SparkSQL 应用程序中,我们会做很多基于列的操作,例如 df.select($"c1", $"c2"),而 DataFrame Row 的架构并不是完全静态的。
不确定如何为用例注册一个或多个序列化程序类。
例如:
case class Info(name: String, address: String)
...
val df = spark.sparkContext.textFile(args(0))
.map(_.split(','))
.filter(_.length >= 2)
.map {e => Info(e(0), e(1))}
.toDF
df.select($"name") ... // followed by subsequent analysis
df.select($"address") ... // followed by subsequent analysis
我认为为每个 select 定义案例类不是一个好主意。
或者如果我注册Info 像registerKryoClasses(Array(classOf[Info])) 一样有帮助
【问题讨论】:
-
什么是
ds?如果您有Dataset[Info],则不需要e => Info()。 -
我更正了这段代码。
标签: apache-spark apache-spark-sql kryo