2016-07-11 5 views
-1

spark-cassandra-connector-javaとSpark SQL DataFrame apisでSpark 1.5.1を使用すると、指定された長さ以下の文字列をフィルタリングする最良の方法はありますか?列の長さに基づいてSpark DataFrame(Java)の列を削減/フィルタリングする方法は?

私はfunctions.length(列)APIの作業を行う方法この

DataFrame df = context.sql("select key from mytable where key is not null") 
DataFrame fdf = df.filter(functions.length(df.col("key").gt(10)))) 

ような何かをしようとしていますか?列を取り込んで列を返しますが、長さはどうなりますか?

答えて

0

1)カラムは、述語を適用するために必要なものです。括弧を変更する

これは、列のキーに基づく述語を適用します。最初に、列キーをLength(キー)の列に変更します。基本的に、我々は今、述語かどうかを判断するために、我々はブール値が使用されている

その列

[ 4 > 10, 3 > 10, 5 > 10 ] -> [ False, False, False ] 
に述語よりも大きいを適用する数値列を持っているので

[ "bird", "cat", "mouse" ] -> [ 4, 3, 5 ] 

次いで、カラム内のすべての値に関数を適用合格または不合格。

2)理由だけではなく、SQL

sqlContext.sql("SELECT * FROM test.common WHERE LENGTH(key) > 10") 

でのチェックは、キーの長さは10

+0

よりも大きいすべての値はありがとう取得しません。これは非常に役に立ちます。私はこの[link] {https://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/spark/sparkSqlSupportedSyntax.html}でDataStaxのドキュメントを参照していましたが、そこにリストされているLENGTHキーワード/機能は表示されませんでした。両方の選択肢が機能しますが、この記事の例を簡略化しました。使用する必要があるのはフィルタ関数の例です。 – Joe

関連する問題