기존 하이브 테이블에 대한 create 문을 가져 오거나 생성하는 방법은 무엇입니까?


91

Hive에 이미 "테이블"이 있다고 가정하면 다른 데이터베이스처럼 해당 테이블에 대한 "CREATE"문을 가져올 수있는 빠른 방법이 있습니까?

답변:



27

Hive 데이터베이스의 모든 테이블에 대해 테이블 ​​ddl을 생성하고 나중에 실행할 수 있도록 텍스트 파일로 내보내는 단계 :

1 단계) hive_table_ddl.sh와 같이 아래 내용으로 .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'을 paramanter로 전달하여 위의 셸 스크립트를 실행합니다.

>bash hive_table_dd.sh <<databasename>>

출력 :

DB의 모든 테이블 생성 문은 HiveTableDDL.txt에 작성됩니다.


1
버킷과 스토리지 형식이 새 테이블로 복제되는지 확인하는 방법입니다.
YouAreAwesome

또한 hive -f HiveTableDDL.txt라고 말하여 스크립트를 실행할 수 있도록 각 문 뒤에 세미콜론을 추가해야합니다.
Muton

이 스크립트는 아래 오류로 인해 실패합니다. 문을 컴파일하는 동안 오류 : FAILED : ParseException 줄 1:18 '|'근처의 입력을 인식 할 수 없습니다. '|' HDP 3.0이 하이브 쉘 액세스를 지원하지 않기 때문에 테이블 이름으로이 스크립트를 beeline으로 실행하고 있습니다
Abhinav

@cfeduke이 스크립트는 하이브 테이블의 위치를 ​​제공합니다. 다른 하이브 위치에서 이러한 ddl을 실행하기 위해 위치 부분을 건너 뛰는 방법은 무엇입니까? 1000 개 이상의 테이블에 대한 변경은 불가능합니다.
user1

2

형식화 / 확장 설명은 하이브에있는 테이블의 데이터 정의를 표시합니다.

hive> describe Formatted dbname.tablename;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.