1

1000 個のテーブルがあり、describe <table name>;1 つずつ確認する必要があります。1つずつ実行する代わりに、「N」個のテーブルを一度にフェッチするコマンドを1つ教えてください。

4

2 に答える 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 に答える