[HADOOP] Hive에서 데이터베이스의 모든 테이블 정의를 얻는 방법?
HADOOPHive에서 데이터베이스의 모든 테이블 정의를 얻는 방법?
하이브에서 모든 테이블 정의를 얻으려고합니다. 단일 테이블 정의에 대해 다음과 같은 것을 사용할 수 있음을 압니다.
describe <<table_name>>
describe extended <<table_name>>
그러나 모든 테이블 정의를 얻을 수있는 방법을 찾지 못했습니다. 메가 스토어에있는 어떤 테이블이 Information_Schema와 비슷하거나 모든 테이블 정의를 가져 오는 명령이 있습니까?
해결법
-
==============================
1.간단한 bash 스크립트와 bash 명령을 작성하여이 작업을 수행 할 수 있습니다.
간단한 bash 스크립트와 bash 명령을 작성하여이 작업을 수행 할 수 있습니다.
먼저 데이터베이스의 모든 테이블 이름을 다음을 사용하여 텍스트 파일에 작성합니다.
$hive -e 'show tables in <dbname>' | tee tables.txt
그런 다음 bash 스크립트 (describe_tables.sh)를 작성하여이 목록의 각 테이블을 반복하십시오.
while read line do echo "$line" eval "hive -e 'describe <dbname>.$line'" done
그런 다음 스크립트를 실행하십시오.
$chmod +x describe_tables.sh $./describe_tables.sh < tables.txt > definitions.txt
definitions.txt 파일에는 모든 테이블 정의가 포함됩니다.
-
==============================
2.
cat hive_databases.txt | grep -v '^$' | while read LINE; do echo "## TableName:" $LINE eval "hive -e 'show tables in $LINE' | grep -v ^$ | grep -v Logging | grep -v tab_name | tee $LINE.tables.txt" cat $LINE.tables.txt | while read table do echo "### $LINE.$table" > $LINE.$table.desc.md eval "hive -e 'describe $LINE.$table'" >> $LINE.$table.desc.md sed -i 's/\t/|/g' ./$LINE.$table.desc.md sed -i 's/comment/comment\n|:--:|:--:|:--:|/g' ./$LINE.$table.desc.md done done
from https://stackoverflow.com/questions/35004455/how-to-get-all-table-definitions-in-a-database-in-hive by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 왜 hadoop이 내 Map 클래스를 인식하지 못합니까? (0) | 2019.06.29 |
---|---|
[HADOOP] 하둡 2와 함께 Oozie, 작업은 "RUNNING" (0) | 2019.06.29 |
[HADOOP] java.lang.VerifyError with Hadoop (0) | 2019.06.29 |
[HADOOP] MapReduce 작업 구성의 매개 변수 설정 (0) | 2019.06.29 |
[HADOOP] hadoop 스트리밍을 사용하여 파일 압축 풀기 (0) | 2019.06.29 |