为了账号安全,请及时绑定邮箱和手机立即绑定

Spark SQL如何爆炸而不会丢失空值

Spark SQL如何爆炸而不会丢失空值

弑天下 2019-11-30 14:00:02
我有一个要拼合的数据框。作为该过程的一部分,我想爆炸它,因此,如果我有一列数组,则将使用数组的每个值来创建单独的行。例如,id | name | likes_______________________________1  | Luke | [baseball, soccer]应该成为id | name | likes_______________________________1  | Luke | baseball1  | Luke | soccer这是我的代码private DataFrame explodeDataFrame(DataFrame df) {    DataFrame resultDf = df;    for (StructField field : df.schema().fields()) {        if (field.dataType() instanceof ArrayType) {            resultDf = resultDf.withColumn(field.name(), org.apache.spark.sql.functions.explode(resultDf.col(field.name())));            resultDf.show();        }    }    return resultDf;}问题是在我的数据中,某些数组列具有空值。在这种情况下,整个行将被删除。所以这个数据帧:id | name | likes_______________________________1  | Luke | [baseball, soccer]2  | Lucy | null变成id | name | likes_______________________________1  | Luke | baseball1  | Luke | soccer代替id | name | likes_______________________________1  | Luke | baseball1  | Luke | soccer2  | Lucy | null如何爆炸数组,以免丢失空行?我正在使用Spark 1.5.2和Java 8
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

您可以使用explode_outer()功能。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 433 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信