2016-08-23 4 views
0

ハイブテーブルに100行あり、50から80の間にある30行をフェッチする方法を教えてください。他の言語のコマンド/クエリはほとんどありません。ハイブにはコマンドやクエリがあります。ハイブテーブルの番号付き行をフェッチする

ありがとうございました。あなたの表の「ID」(すなわち、いくつかのユニークキー、またはキーのユニークな組み合わせ)を持ってトリックを行います

+0

CTEとウィンドウ関数を使用してカスタムクエリを作成する必要があるような機能はありません。 –

+0

サイドノート:SQLは**同じ** 2つの同様のSELECTクエリが**同じ順序で行を返すことを保証しません**。それはすべてのデータベースに当てはまります。 MapReduce処理が分散されているため、Hiveではさらに真実です。したがって、結果を「ページング」する場合は、毎回一意のキーとORDER BY(ウィンドウに暗黙的に)が必要です –

答えて

1
SELECT * 
FROM 
(SELECT id, aaa, bbb, ccc, 
    ROW_NUMBER() OVER (ORDER BY id) rank__ 
    FROM mydb.mytable 
) windowed__ 
WHERE rank__ BETWEEN 51 AND 80 
ORDER BY rank__ 

、。

しかし、結果をページングするだけで何度も実行すると、パフォーマンスがひどくなる - つまり、毎回完全なMapReduceジョブを意味します。

関連する問題