既存のハイブテーブルの作成ステートメントを取得/生成する方法は?


90

「テーブル」がすでにHiveにあると仮定すると、他のデータベースのように、そのテーブルの「CREATE」ステートメントを取得できる簡単な方法はありますか?

回答:



26

HiveデータベースのすべてのテーブルのCreate Table DDLを生成し、後で実行するためにテキストファイルにエクスポートする手順:

ステップ1)以下の内容の.shファイルを作成します(hive_table_ddl.shなど)。

#!/bin/bash
rm -f tableNames.txt
rm -f HiveTableDDL.txt
hive -e "use $1; show tables;" > tableNames.txt  
wait
cat tableNames.txt |while read LINE
   do
   hive -e "use $1;show create table $LINE;" >>HiveTableDDL.txt
   echo  -e "\n" >> HiveTableDDL.txt
   done
rm -f tableNames.txt
echo "Table DDL generated"

ステップ2) 'db name'をパラメーターとして渡して上記のシェルスクリプトを実行します。

>bash hive_table_dd.sh <<databasename>>

出力:

DBのすべてのテーブル作成ステートメントがHiveTableDDL.txtに書き込まれます


1
バケットとストレージ形式が新しいテーブルに複製されることを確認する方法。
YouAreAwesome 2017

また、各ステートメントの後にセミコロンを追加して、hive -f HiveTableDDL.txtと言ってスクリプトを実行できるようにする必要があります。
ムトン

このスクリプトは次のエラーで失敗します:ステートメントのコンパイル中にエラーが発生しました:FAILED:ParseException行1:18が '|'の近くの入力を認識できません '|' HDP 3.0はハイブシェルアクセスをサポートしていないため、テーブル名でこのスクリプトをビーラインで実行しています
Abhinav

@cfedukeこのスクリプトは、ハイブテーブルの場所を示します。別のハイブの場所でこれらのDDLを実行するために場所の部分をスキップする方法 1000を超えるテーブルの変更は不可能
user1

2

フォーマット/拡張の説明は、ハイブ内のテーブルのデータ定義を示します

hive> describe Formatted dbname.tablename;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.