2016-04-19 7 views
0

DataFrameReader.load("table name")を使用してhiveテーブルレコードをロードし、DataFrameとして返します。Spark SQL - DataFrameReaderのロードメソッドwhere

しかし、レコード全体をロードしたくないので、特定の日付(ハイブテーブルのフィールドの1つ)のレコードのみをフェッチしたかったのです。

返されたDataFrameにwhere条件を追加すると、最初にテーブル全体がロードされますか?filter日付に基づくレコードですか?

ハイブテーブルが巨大で、日付フィールドに基づいてパーティション化されているためです。

基本的には、テーブル全体をロードせずにloadメソッドを使用してselect * from table where date='date'を達成したいと思います。

答えて

0

スパークサポートの最近のバージョンでは、「述語プッシュダウン」という機能がサポートされています。それはあなたが望むものを正確に行います。可能であれば、SQLはWHEREをソースにします。述語プッシュダウンがHiveデータソースで動作するかどうかはわかりません(これは、寄木細工、JDBCおよびその他のソースで動作します)。 も参照してください。Does spark predicate pushdown work with JDBC?