[HADOOP] 하이브를 사용하여 1000 개의 테이블 설명을 얻으려면 어떻게해야합니까?
HADOOP하이브를 사용하여 1000 개의 테이블 설명을 얻으려면 어떻게해야합니까?
내가 1000 테이블을 가지고, <테이블 이름> 설명을 확인해야합니다; 하나씩. 하나씩 실행하는 대신 하나의 명령으로 "N"개의 테이블을 가져 오는 명령을 하나만 주시겠습니까?
해결법
-
==============================
1.쉘 스크립트를 만들고 매개 변수를 사용하여 호출 할 수 있습니다. 예를 들어 다음 스크립트는 스키마를 받고 스키마의 테이블 목록을 준비하고 DESCRIBE EXTENDED 명령을 호출하고 위치를 추출하며 이름순으로 정렬 된 스키마에서 처음 1000 개의 테이블에 대한 테이블 위치를 인쇄합니다. 이 명령을 수정하여 단일 명령으로 사용할 수 있습니다.
쉘 스크립트를 만들고 매개 변수를 사용하여 호출 할 수 있습니다. 예를 들어 다음 스크립트는 스키마를 받고 스키마의 테이블 목록을 준비하고 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
-
==============================
2.메타 스토어 쿼리
메타 스토어 쿼리
하이브
create database my_db_1; create database my_db_2; create database my_db_3; create table my_db_1.my_tbl_1 (i int); create table my_db_2.my_tbl_2 (c1 string,c2 date,c3 decimal(12,2)); create table my_db_3.my_tbl_3 (x array<int>,y struct<i:int,j:int,k:int>);
MySQL (Metastore)
use metastore ; select d.name as db_name ,t.tbl_name ,c.integer_idx + 1 as col_position ,c.column_name ,c.type_name from DBS as d join TBLS as t on t.db_id = d.db_id join SDS as s on s.sd_id = t.sd_id join COLUMNS_V2 as c on c.cd_id = s.cd_id where d.name like 'my\_db\_%' order by d.name ,t.tbl_name ,c.integer_idx ;
+---------+----------+--------------+-------------+---------------------------+ | db_name | tbl_name | col_position | column_name | type_name | +---------+----------+--------------+-------------+---------------------------+ | my_db_1 | my_tbl_1 | 1 | i | int | | my_db_2 | my_tbl_2 | 1 | c1 | string | | my_db_2 | my_tbl_2 | 2 | c2 | date | | my_db_2 | my_tbl_2 | 3 | c3 | decimal(12,2) | | my_db_3 | my_tbl_3 | 1 | x | array<int> | | my_db_3 | my_tbl_3 | 2 | y | struct<i:int,j:int,k:int> | +---------+----------+--------------+-------------+---------------------------+
from https://stackoverflow.com/questions/43803834/how-do-we-get-the-1000-tables-description-using-hive by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop 출력 파일에 커스텀 이름을주는 법 (0) | 2019.07.20 |
---|---|
[HADOOP] 조건에 일치하는 행 시퀀스에 대한 식별자를 생성하는 하이브 쿼리 (0) | 2019.07.20 |
[HADOOP] 하이브에 데이터를로드하는 동안 주변 인용 부호를 필드에서 제거하십시오. (0) | 2019.07.20 |
[HADOOP] 동적 리소스 할당을 사용하여 스파크 프로그램을 실행하는 방법 (0) | 2019.07.20 |
[HADOOP] sqoop merge-key : merge-key를 사용하지 않고 여러 개의 part 파일을 만드는 것. (0) | 2019.07.20 |