2017-01-16 10 views
0

私はhbaseに1億レコードのテーブルを持っています。特定の条件(日付順)に基づいてレコードをフィルタリングしたいと思います。例えばスパークデータフレームでフィルタ条件がどのように機能していますか?

:テーブルからすべてのレコードがメモリにロードされます後

Dataframe.filter(col(date) === todayDate) 

フィルタが適用されますか私はレコードをフィルター得るのだろうか?

+1

一方、使用しているデータソースによって異なるとします。データソースがすべてのプッシュダウン述部をサポートしていないことがあります。あなたの質問は、mongo、elasticsearch、hbase、cassandra、csvなどに接続できるスパークのすべてのデータソースを考慮して、あなたの質問はかなり広範囲です。 – eliasah

+0

spbase hbaseコネクタhttpsを使用してhbaseからテーブルを読み込もうとしています。 ://github.com/hortonworks-spark/shc –

答えて

0

あなたのユースケースがちょうどストレージから読み込まれた場合は、それをフィルタリングしてどこかに保存してください。そして、データをRDDに直接読み込む方法があると(レコードの遅延読み込み)、フィルタは読み書きでパイプライン化されます。つまり、フィルタ操作はデータ全体が読み込まれるのを待つことはありません[要するに、フィルタは変換であり、アクションではありません]。フィルターの前にアクションがある場合、フィルターはストア全体からデータを読み取った後にのみ適用されます。

+1

'フィルターの前にアクションがあれば、フィルターはストア全体のデータを読み込んだ後にのみ適用されます.'アクションはRDDではなく値を返すので、フィルタの結果); –

+0

@T.Gawędaと同様に、あなたの答えは正確ではなく、OPの質問に本当に答えるものでもありません。 – eliasah

+0

@T.Gawęda私は同意しますが、質問は*テーブルからのすべてのレコードがメモリにロードされた後にフィルタが適用されるか、フィルタリングされたレコードを取得する*でしょう、そのステートメントはデータ全体が読み込まれる場合を強調します。値を返すRDDごとに、私はそれに同意します。しかし、rdd.count()とrdd.filter(...)を呼び出す場合を考えて、私の投稿は質問された質問に答えます。 – code

関連する問題