2016-12-02 5 views
0
var rtn = df.select(
       col(colmap.get("AAAAA")) as "AAAAA", 
       lit(colmap.get("BBBBB")) as "BBBBB", 
       col(colmap.get("CCCCC")) as "CCCCC", 
       col(colmap.get("DDDDD")) as "DDDDD" 
      ) 
      .where(col("AAAAA").isNotNull && col("BBBBB").isNotNull && col("CCCCC").isNotNull && col("DDDDD").isNotNull) 

      rtn.show() 

リターンデータフレームにはまだいくつかのヌル値があります。私は間違っているのですか?スパーク - マルチコンディションのデータフレーム


電流出力

+--------+-----------+----------- 
|AAAAA|BBBBB|CCCCC|DDDDD|EEEEE| 
+--------+-----------+----------- 
|A11111|B12345|C1111|D11111|  | 
|A22222|B12345|C2222|D22222|  | 
|A33333|B12345|C3333|D33333|E11111| 
|A44444|B12345|C4444|D44444|  | 
|A55555|B12345|C5555|D55555|E11111| 

私の予想出力

+--------+-----------+----------- 
|AAAAA|BBBBB|CCCCC|DDDDD|EEEEE| 
+--------+-----------+----------- 
|A11111|B12345|C1111|D11111|E11111| 
|A22222|B12345|C2222|D22222|E11111| 
|A33333|B12345|C3333|D33333|E11111| 
|A44444|B12345|C4444|D44444|E11111| 
|A55555|B12345|C5555|D55555|E11111| 

EEEEE列にいくつかのNULL値は、まだあります。条件が正しく機能していないように見えるDataFrame

+1

ダンプコードではなく、何をしているのか詳しく教えてください。また、サンプルデータと期待される出力を提供してください。 – mtoto

+0

where句にEEEEE列を追加していません –

答えて

1

データに空文字列が含まれていないと思われます(NULLs)。空白文字列をフィルタリングするには、rlike使用することができます。

import org.apache.spark.sql.functions.not 

not($"foo".rlike("^\\s*$"))) // or !$"foo".rlike("^\\s*$") 

またはtrimlength

:側として
import org.apache.spark.sql.functions.{trim, length} 

length(trim($"foo")) =!= 0 

あなたは NULLを含む行を削除するには、列の順序で DataFrameNaFunctions.dropを使用することができます注意してください
df.na.drop(Seq("foo", "bar")) 

または

df.na.drop() 

すべての行を含むNULLを削除する場合は、

+0

あなたは正しいです。それはnullではありませんでした。私はDBからヌルデータを持ってきましたが、ヌルではなく黒い文字列として含まれています。ありがとう:) –

関連する問題