Spark,什么时候我们需要启用 KryoSerializer?
我有一个spark(版本2.4.7)工作,
JavaRDD<Row> rows = javaSparkContext.newAPIHadoopFile(...)
.map(d -> {
Foo foo = Foo.parseFrom(d._2.copyBytes());
String v1 = foo.getField1();
int v2 = foo.getField2();
double[] v3 = foo.getField3();
return RowFactory.create(v1, v2, v3);
})
spark.createDataFrame(rows, schema).createOrReplaceTempView("table1");
spark.sql("...sum/avg/group-by...").show();
这里的Class Foo是一个复杂的Google protobuf类。
我有几个问题:
- 在这种情况下,将“spark.serializer”更改为 Kryo 会对 Foo 对象产生任何影响吗?
- 在这种情况下,如果DataFrame的所有列都是primitive或String或primitive/String数组,从性能角度来看,是否有必要将'spark.serializer'更改为Kryo?
许多感谢。
I have a spark (version 2.4.7) job,
JavaRDD<Row> rows = javaSparkContext.newAPIHadoopFile(...)
.map(d -> {
Foo foo = Foo.parseFrom(d._2.copyBytes());
String v1 = foo.getField1();
int v2 = foo.getField2();
double[] v3 = foo.getField3();
return RowFactory.create(v1, v2, v3);
})
spark.createDataFrame(rows, schema).createOrReplaceTempView("table1");
spark.sql("...sum/avg/group-by...").show();
Class Foo here is a complex Google protobuf class.
I have several questions:
- Will changing the 'spark.serializer' to Kryo have any impact on Foo objects in this case?
- In this case, if all columns of DataFrame are either primitive or String or array of primitive/String, from the performance perspective, is it necessary to change the 'spark.serializer' to Kryo?
Many thnaks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论