2016-03-02 9 views
14

Spark 1.3.0Spark Avro 1.0.0が使用されています。 私はthe example on the repository pageから働いています。この次のコードはうまくフィルタースパークDataFrameの文字列には、

val df = sqlContext.read.avro("src/test/resources/episodes.avro") 
df.filter("doctor > 5").write.avro("/tmp/output") 

しかし、私はdoctor文字列が部分文字列を含んでいるかどうかを確認するために必要であれば、どのような作品?文字列の中に式を書いているからです。 「含む」をするために私は何をしますか?

答えて

26

あなたは(これは任意の順序で動作)containsを使用することができます。

df.filter($"foo".contains("bar")) 

like(SQL SQL単純な正規表現と同じように、任意の順序に一致する任意の文字に一致する_% whith):

df.filter($"foo".like("bar")) 

またはrlikeJava regular expressionsと同様):

df.filter($"foo".rlike("bar")) 

あなたの要件に応じて。 LIKERLIKEもSQL式で動作するはずです。

+0

は上記のスカラコードですか?スカラは$記号が気に入らないようです。 'import org.apache.spark.sql.functions.lit' –

+6

スカラをインポートしました。 '$'を動作させるには 'import sqlContext.implicits._'が必要です。 'df(" foo ")'や 'org.apache.spark.sql.functions.col(" foo ")'で置き換えることもできます。 – zero323

+0

すごい!ありがとうたくさん –

関連する問題