我有一个要拼合的数据框。作为该过程的一部分,我想爆炸它,因此,如果我有一列数组,则将使用数组的每个值来创建单独的行。例如,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
添加回答
举报
0/150
提交
取消