2017-08-15 11 views
-2

私は、Spark 1.6で以下のデータフレームを持って、私は以下のようなデータフレームフィルタ内のフィルタ変数を使用したいがエラーを取得。私はこのスパークScalaのデータフレームのエラー

df.where(fil).show 

を実行すると

val df = sc.parallelize(Seq(
("None", "a", "b"), ("c", "None", "d"), ("e", "f", "None"), ("g", "h", "i"))).toDF("A", "B", "C") 

val fil = """($"A" !== "None") && ($"B" !== "None") && ($"C" !== "None")""" 

私はこのエラーを取得しています:

java.lang.RuntimeException: [1.2] failure: identifier expected 

    ($"A" !== "None") && ($"B" !== "None") && ($"C" !== "None") 
    ^
      at scala.sys.package$.error(package.scala:27) 
      at org.apache.spark.sql.catalyst.SqlParser$.parseExpression(SqlParser.scala:49) 
      at org.apache.spark.sql.DataFrame.where(DataFrame.scala:806) 

助けてください。

答えて

0

使用のいずれかの適切なSQL:

val fil = """A != "None" AND B != "None" AND C != "None"""" 

またはDSL(2.xの)

val fil = ($"A" =!= "None") && ($"B" =!= "None") && ($"C" =!= "None") 

(1.1):

val fil = ($"A" !== "None") && ($"B" !== "None") && ($"C" !== "None") 
+0

私はこのヴァルFILを行う=($で&&($ "B" =!= "None")&&($ "C" =!= "None")filはorg.apache.spark.sql.Column型になりますそれは動作しますが、私はそれをorg.apache.spark.sql.Columnに変換する文字列を持っているので、データフレームフィルタで使用できます。お返事をありがとうございます – rubiks

0

この "" "($" 」!== "なし")& &($ "B"!== "なし")& &($ "C"!== "なし") ""は文字列としてWhere条件で置換されました。

あなたは、列名のシーケンスを作成し、 columns.head、のようなWHERE条件でそれらの列を直接参照することができます==「なし:」!どこ条件を直接

関連する問題