Apache Hive - Phoenix에 연동하는 External Hive Table 생성 오류 (NoSuchColumnFamilyException)
·
DataPipeline/Hive
[ 에러메세지 ] Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family table does not exist in region hbase:meta,,1.1588230740 in table 'hbase:meta', {TABLE_ATTRIBUTES => {IS_META => 'true', REGION_REPLICATION => '1', coprocessor$1 => '|or..
Apache Hive - Serde가 적용된 테이블 컬럼 추가&변경
·
DataPipeline/Hive
Hive Table Column Add는 Table에 서데가 적용되어 있으면 수행할 수 없다. Column Replace 또한 마찬가지. 1. 새로운 스키마로 Hive Table을 만든다. 2-1. 기존에 있던 파티션을 새 Table의 파티션으로 수정한다. Ex. Alter Table [테이블명] Partition (yymmdd='20210321') Set Location 'hdfs://127.0.0.1/user'; 2-2. 새 테이블의 빈 파티션을 생성한 후, 기존 테이블의 서데파일(000000_0)을 새 테이블 파티션 위치로 옮긴다. Ex. sudo -u hdfs hdfs -dfs cp /user/hive/old../ /user/hive/new..../ 그외 유용한 커멘드 * 테이블 정보 위치 확인 ..
Apache Hive - 날짜관련 함수
·
DataPipeline/Hive
1. 날짜 포맷 변환from_unixtime(bigint unixtime, string format)return 값 : stringunix타임스탬프 값을 정해진 날짜형식에 맞추어 출력한다.- select from_unixtime(1323308938, 'yyyy-MM-dd') from dual;20210101포맷을 2021-01-01포맷으로 날짜형식변환도 가능하다.- select from_unixtime(unix_timestamp('20210101, 'yyyyMMdd'), 'yyyy-MM-dd') from dual; 2. 특정 날짜 값 가져오기날짜 부분만 리턴select to_date('2021-01-13 10:11:34') from dual;-> 2021-01-13연도 부분만 리턴select year('..
Apache Hive - Encoding 과 Decoding
·
DataPipeline/Hive
'20528978에 대하여 인코딩 디코딩. [ 인코딩 ] select base64(encode('20528978', 'UTF-8')) 결과 값 : MjA1Mjg5Nzg= [ 디코딩 ] select decode(unbase64('MjA1Mjg5Nzg='), 'UTF-8') 결과 값 : 20528978 [ 다양한 형식 ] select decode(unbase64('MjA1Mjg5Nzg='), 'ISO-8859-1'); select decode(unbase64('MjA1Mjg5Nzg='), 'UTF-16LE'); 변환해주는 웹사이트 https://www.base64encode.org/d
Apache Hive - Hive to Phoenix Table
·
DataPipeline/Hive
[ 사전셋팅 (Prerequisites) ] phoenix-version-hive.jar 파일을 찾고, 해당 하이브 설정파일에 value를 추가하여 하이브 맵리듀스 잡이 jar파일 사용하게 한다. 1) hive-env.sh : HIVE_AUX_JARS_PATH= 2) hive-site.xml hive.aux.jars.path file:// [ 테이블 생성 ] jar파일에 있는 storage Handler는 internal과 external 하이브테이블 생성을 지원한다. 1) Create Internal Table Hive에서 테이블생성시 Phoenix에도 자동으로 테이블 생성되며, Hive나 Hue에서 데이터 조회와 같은 쿼리가 가능하다. Internal Phoenix테이블은 Hive테이블 lifecyc..
Apache Hive - Json 컨트롤
·
DataPipeline/Hive
Hive에서 Json파일 컨트롤 1. get_json_objecthive 0.7.0 이하로는 아래와 같이 사용한다. [ 데이터 ] [ 쿼리문 ]SELECT get_json_object(StudentsOneLine, '$.StudentDetails.FirstName'), get_json_object(StudentsOneLine, '$.StudentDetails.LastName')FROM StudentsOneLine;  2. json_tuple 사용아래와 같은 json 파일이 있다.{ "memberId":817090,"campaigns": [ {"id":"40718","amount":"10"}, {"id":"40801","amount":"26"}, {"id":"40..
Apache Hive - 조인 (Join)
·
DataPipeline/Hive
[ 쿼리시 테이블 배치 ]테이블 간의 Join은 부하가 매우크므로 스키마설계시 최대한 Join을 하지 않도록 구성해야 한다.하이브에서 조인 사용시 왼쪽에서 오른쪽 FROM절 순서로 쿼리가 실행되므로일반적으로 가장 데이터가 큰 테이블을 맨 오른쪽(마지막)에 실행되도록 쿼리를 짠다. 작은 테이블이 먼저 처리되면, 큰 데이터와의 조인이 더 효율적으로 이루어지는 이유는Mapper에서 작은 테이블을 먼저 읽고 메모리에 올려둔 뒤, 큰 테이블의 데이터와 비교하기 때문이다.큰 데이터는 메모리에 적재되지 않고 디스크 기반 스트리밍 방식으로 처리된다.따라서 큰 테이블을 오른쪽에 배치하면 성능 최적화가 가능하다. * HUE이용시 Error while processing statement: FAILED: Execution ..
Apache Hive - 파일 병합 (File Merge)
·
DataPipeline/Hive
[ 파일Merge ] 너무 많은 파일이나 중복된 파일이 HDFS블록 크기보다 작을경우 네임노드의 메모리를 소진시킨다.Hive의 경우 작은 파일을 많이 만들지 않도록 파일병합을 설정할 수 있다. 1. Merge 설정SET hive.merge.mapfiles : 맵전용 잡의 작은 파일들을 병합한다.(Default true)SET hive.merge.mapredfiles : 맵리듀스 잡의 결과들을 병합한다.SET hive.merge.size.per.task: 작업 종료시 병합된 파일을 크기를 정의한다(Default 256MB)SET hive.merge.smallfiles.avgsize : 파일 병합을 실행하는 트리거 임계값이다. (Default 16MB) 출력파일의 크기가 hive.merge.smallfile..
wave35
'DataPipeline/Hive' 카테고리의 글 목록