2012-03-12 9 views
0

無効なレコードをフィルタリングするためにハイブクエリを実行しようとしています。ここでは私がやっていることは です。1. csvファイルを単一の列テーブルにロードします。 2.ここでは、クエリハイブ:クエリ結果に基づいて複数のテーブルに挿入する

from pgstg INSERT OVERWRITE LOCAL DIRECTORY '/tmp/validrecords.out' 
select * where my_validation(record) IS NOT NULL 
INSERT OVERWRITE TABLE PGERR 
select record where my_validation(record) IS NULL; 

を実行し、各レコード 3を検証するためにUDF my_validationを定義し、私の質問です: 。無効なレコードをフィルタリングするより良い方法はありますか? b。 my_validation UDFはテーブル全体で2回実行されますか? c。単一の列を複数の列に分割する最も良い方法は何ですか。

ご協力いただきありがとうございます。あなたの質問に答えるために

答えて

0

1)カスタム検証基準を持っている場合はUDFは、おそらく行く方法です。私がそれをやっていたら、NULLを返すのではなくNULLを返すのではなく、booleanを返すis_valid UDFを作成します。

2)はい、UDFは2回実行されます。

3)嬉しく思った。ハイブで利用可能なexplodeの機能をご覧ください

関連する問題