2017-05-12 9 views
0

異なるスキーマを持つHiveに複数のテーブルがあります。ハイブのマルチテーブルからデータを選択

各テーブルから上位20行を選択し、csvファイルにダンプします。

これを行う方法はありますか。私が見つけたのは、単一のテーブルからデータをダンプすることです。csv.

何か助けていただけたら幸いです!

+0

1つのCSVファイルまたは複数のファイルですか? –

+0

テーブルにプリミティブ型(配列、構造体などはありません)のみを格納することができますか? –

+0

@DuduMarkovitzca単一のCSVファイル。 –

答えて

1

スキーマが異なる場合。

1.下のサンプルコードでは、複数のcsvファイルが生成されます。

#!/bin/bash 

    tbs=$(hive -S -e "show tables") 
    for tb in $tbs 
    do 
    hive -e "set hive.cli.print.header=true; SELECT * FROM $tb LIMIT 20;" | sed 's/[\t]/,/g' > $tb.csv 
    done 

2.下のサンプルコードでは、単一のcsvファイルが生成されます。

#!/bin/bash 

    tbs=$(hive -S -e "show tables") 
    for tb in $tbs 
    do 
    echo "Table Name : "$tb >> sampleData.csv 
    hive -e "set hive.cli.print.header=true; SELECT * FROM $tb LIMIT 20;" | sed 's/[\t]/,/g' >> sampleData.csv 
    done 
+0

良くなっています:-)ビーラインを使うのはどうですか? –

+0

ハイブスクリプトが必要な場合、どのようにして単一のcsvを生成するための同様のコードを書くでしょうか。 –

+1

ハイブスクリプトではループできません。ハイブスクリプトに書き込む特定の要件はありますか? –

関連する問題