2017-06-13 11 views
0

アテーナのN行のランダムサンプルを取得しようとしています。私はこのサンプルを描きたい、そこからテーブルが巨大であるため、しかしナイーブアテナのサイズNのランダムサンプル

SELECT 
id 
FROM mytable 
ORDER BY RANDOM() 
LIMIT 100 

ORDER BYは単一ノード、その後、シャッフルに送信するすべてのデータを必要とするため、おそらく、実行するように永遠にかかり、データの順序。

私は約TABLESAMPLEを知っていますが、いくつかの数ではなく一部の行をサンプリングすることができます。これを行うより良い方法はありますか?

+0

どのようなタイプのコネクタを使用していますか?ハイブコネクターでは、単純な 'SELECT * FROM t LIMIT 10'を実行するたびに少しずつ異なる行が得られます。より新しいデータに偏っています。異なるノードが毎回結果を返すために「レース」に勝利するためです。あなたのサンプルはどれくらい偏っている必要がありますか? –

答えて

4

アテナは実際にはプレストです。 TABLESAMPLEを使用すると、テーブルのサンプルをランダムに取得できます。

SELECT id FROM mytable TABLESAMPLE BERNOULLI(10)

BERNOULLIおよびSYSTEMサンプリングがあることをご注意:

は、あなたのテーブルの10%のサンプルをしたいとしましょう、あなたのクエリは次のようになります。 Hereはそのドキュメントです。

関連する問題