1000 個のテーブルがあり、describe <table name>;
1 つずつ確認する必要があります。1つずつ実行する代わりに、「N」個のテーブルを一度にフェッチするコマンドを1つ教えてください。
質問する
1501 次
2 に答える
1
シェル スクリプトを作成し、パラメーターを指定して呼び出すことができます。たとえば、次のスクリプトはスキーマを受信し、スキーマ内のテーブルのリストを準備し、DESCRIBE EXTENDED コマンドを呼び出し、場所を抽出し、スキーマ内の最初の 1000 個のテーブルのテーブルの場所を名前順に出力します。単一のコマンドとして変更して使用できます。
#!/bin/bash
#Create table list for a schema (script parameter)
HIVE_SCHEMA=$1
echo Processing Hive schema $HIVE_SCHEMA...
tablelist=tables_$HIVE_SCHEMA
hive -e " set hive.cli.print.header=false; use $HIVE_SCHEMA; show tables;" 1> $tablelist
#number of tables
tableNum_limit=1000
#For each table do:
for table in $(cat $tablelist|sort|head -n "$tableNum_limit") #add proper sorting
do
echo Processing table $table ...
#Call DESCRIBE
out=$(hive client -S -e "use $HIVE_SCHEMA; DESCRIBE EXTENDED $table")
#Get location for example
table_location=$(echo "${out}" | egrep -o 'location:[^,]+' | sed 's/location://')
echo Table location: $table_location
#Do something else here
done
于 2017-05-05T12:11:42.787 に答える