[HADOOP] Hive의 '테이블 <테이블 이름> 연결'작업을 어떻게 변경합니까?
HADOOPHive의 '테이블 <테이블 이름> 연결'작업을 어떻게 변경합니까?
나는 큰 오크 파일의 k (작은) 번호로 병합하려는 작은 크기의 오크 파일을 n (큰) 번호로 가지고 있습니다.
이것은 Hive에서 alter table table_name concatenate 명령을 사용하여 수행됩니다.
하이브가 어떻게 구현하는지 이해하고 싶습니다. 필자는 필요한 경우 Spark을 사용하여이를 구현하려고합니다.
어떤 포인터가 좋을 것입니다.
해결법
-
==============================
1.AlterTable / PartitionConcatenate에 따라 :
AlterTable / PartitionConcatenate에 따라 :
테이블이나 파티션에 작은 RCFiles 또는 ORC 파일이 많이 포함되어 있으면 위의 명령을 통해 큰 파일로 병합합니다. RCFile의 경우 병합은 블록 수준에서 발생하지만 ORC 파일의 경우 병합이 스트라이프 수준에서 발생하므로 데이터의 압축을 풀고 디코딩하는 오버 헤드가 발생하지 않습니다.
또한 ORC 줄무늬 :
ORC 파일의 본문은 일련의 줄무늬로 구성됩니다. 줄무늬 대형 (일반적으로 ~ 200MB)이며 서로 독립적이며 종종 다른 작업에 의해 처리됩니다. 기둥 형의 특성 정의 저장 형식은 각 열의 데이터가 별도로 저장된다는 것입니다 파일에서 데이터를 읽는 것은 파일에 비례해야합니다. 읽은 열의 수 ORC 파일에서 각 열은 저장되는 여러 스트림에 저장됩니다. 파일에서 서로 옆에 있습니다. 예를 들어, 정수 열은 다음과 같습니다. 두 스트림 PRESENT로 표현되며, 비트 당 하나씩 사용 값이 null이 아닌 경우 값 기록 및 DATA가 기록됩니다. null이 아닌 값. 스트라이프 내의 모든 열의 값이 null가 아닌 경우, PRESENT 스트림은 스트라이프에서 생략됩니다. 바이너리 데이터의 경우 ORC PRESENT, DATA 및 LENGTH의 세 가지 스트림을 사용하여 길이를 저장합니다. 각 값의 각 유형의 세부 정보는 다음 단원.
Spark에서 구현할 경우 Spark Context를 사용하여 SparkSQL을 사용할 수 있습니다.
scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) scala> sqlContext.sql("Your_hive_query_here")
from https://stackoverflow.com/questions/41820925/how-does-hive-alter-table-table-name-concatenate-work by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] spark-shell 오류 : 스키마에 대한 FileSystem이 없습니다. wasb (0) | 2019.08.01 |
---|---|
[HADOOP] Hive의 hour () 함수는 12 시간 시계 값을 반환합니다. (0) | 2019.08.01 |
[HADOOP] 왜이 Pig UDF 결과는 "오류 : Java 힙 공간"에 데이터 벅을 디스크에 쏟아 놓았습니까? (0) | 2019.08.01 |
[HADOOP] Map-Reduce / Hadoop을 정수 값으로 정렬 (MRJob 사용) (0) | 2019.08.01 |
[HADOOP] hadoop 작업 추적기를 시작할 수 없습니다. (0) | 2019.08.01 |