異なるスキーマを持つHive
に複数のテーブルがあります。ハイブのマルチテーブルからデータを選択
各テーブルから上位20行を選択し、csvファイルにダンプします。
これを行う方法はありますか。私が見つけたのは、単一のテーブルからデータをダンプすることです。csv.
何か助けていただけたら幸いです!
異なるスキーマを持つHive
に複数のテーブルがあります。ハイブのマルチテーブルからデータを選択
各テーブルから上位20行を選択し、csvファイルにダンプします。
これを行う方法はありますか。私が見つけたのは、単一のテーブルからデータをダンプすることです。csv.
何か助けていただけたら幸いです!
スキーマが異なる場合。
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
良くなっています:-)ビーラインを使うのはどうですか? –
ハイブスクリプトが必要な場合、どのようにして単一のcsvを生成するための同様のコードを書くでしょうか。 –
ハイブスクリプトではループできません。ハイブスクリプトに書き込む特定の要件はありますか? –
1つのCSVファイルまたは複数のファイルですか? –
テーブルにプリミティブ型(配列、構造体などはありません)のみを格納することができますか? –
@DuduMarkovitzca単一のCSVファイル。 –