2017-11-14 9 views
1

임팔라에서는 특정 열 이름이 포함 된 데이터베이스의 테이블을 확인하는 방법이 있습니까? 같은임팔라 - 특정 열이있는 테이블 찾기

뭔가 :

select tablename, columnname 
from dbc.columns 
where databasename = 'mydatabasename' 
and columnname like '%findthis%' 
order by tablename 

위의 쿼리가 테라 데이타 환경에서 작동하지만, 임팔라에서 오류가 발생합니다.

감사합니다.

+0

임팔라에는 'dbc.columns'같은 것이 없습니다. –

답변

3

임팔라는 하이브로 메타 스토어를 공유합니다. 기존 RDBMS와 달리 Hive 메타 데이터는 별도의 데이터베이스에 저장됩니다. 대부분의 경우 MySQL 또는 Postgres에 있습니다. 메타 스토어 데이터베이스에 액세스 할 수있는 경우 TBLS 테이블에서 SELECT를 실행하여 테이블에 대한 세부 정보를 가져오고 COLUMNS_V2를 사용하여 열에 대한 세부 정보를 얻을 수 있습니다.

메타 스토어에 액세스 할 수없는 경우 유일한 옵션은 각 테이블에서 열 이름을 가져 오는 것입니다. 데이터베이스와 테이블이 많은 경우 "show tables"를 사용하여 테이블 목록을 가져 오는 쉘 스크립트를 작성하고 "desc tablename"을 사용하여 테이블 주위를 반복하여 설명 할 수 있습니다.

+0

하이브에 액세스 할 수 있지만 tbl 및 columns_v2로 오류가 발생합니다 – acvbasql

+1

@acvbasql - 하이브/임팔라에서는이 테이블을 볼 수 없습니다. 메타 스토어 데이터베이스를 찾아서 쿼리를 실행해야합니다. 메타 스토어 데이터베이스 세부 정보는 hive-site.conf에서 찾을 수 있습니다. 일반적으로 RDBMS입니다. – Ramesh