2016-05-19 16 views
5

私は以下のコードを使用してnullまたは空の文字列である行のうちフィルタによる新しいデータフレームを作成しようとしています:データフレームのエラー:「選択肢を持つオーバーロードされたメソッド値フィルタ」

val df1 = df.filter(df("fieldA") != "").cache() 

それから私は得ました次のエラー:

<console>:32: error: overloaded method value filter with alternatives: 
     (conditionExpr: String)org.apache.spark.sql.DataFrame <and> 
     (condition: org.apache.spark.sql.Column)org.apache.spark.sql.DataFrame 
    cannot be applied to (Boolean) 
        val df1 = df.filter(df("fieldA") != "").cache() 
           ^

私がここで逃したものは誰か知っていますか?ありがとう! Scalaで

答えて

10

は、平等の列方向を比較するために、あなたは(2.0+スパークや=!====!==を使用する必要があります。また

val df1 = df.filter(df("fieldA") !== "").cache() 

、エクスプレッション使用することができます。

val df1 = df.filter("fieldA != ''").cache() 

!=演算子がすべてのScalaオブジェクトに存在し、オブジェクトの比較に使用され、常にBooleanを返すため、エラーが発生しました。ただし、filter関数では、列オブジェクトまたは文字列内の式が必要なので、Columnクラスには!==演算子があり、別のColumnを返してから、必要な方法で使用できます。

カラムで使用できるすべての操作を表示するには、Column scaladocが非常に便利です。また、functionsパッケージもあります。

関連する問題