n(large)
개의 오크 파일을 병합하고 싶습니다. 오크 파일 수는 k(small)
입니다.Hive '테이블 <table name>을 어떻게 변경하여'작업 '을 연결합니까?
하이브에서 alter table table_name concatenate
명령을 사용하여 수행됩니다.
하이브가 어떻게 구현했는지 알고 싶습니다. 필요한 경우 Spark을 사용하여이 변경 사항을 구현하려고합니다.
모든 포인터가 좋을 것입니다.
n(large)
개의 오크 파일을 병합하고 싶습니다. 오크 파일 수는 k(small)
입니다.Hive '테이블 <table name>을 어떻게 변경하여'작업 '을 연결합니까?
하이브에서 alter table table_name concatenate
명령을 사용하여 수행됩니다.
하이브가 어떻게 구현했는지 알고 싶습니다. 필요한 경우 Spark을 사용하여이 변경 사항을 구현하려고합니다.
모든 포인터가 좋을 것입니다.
AlterTable/PartitionConcatenate에 따라 경찰 : 테이블 또는 파티션이 많은 작은 RCFiles 또는 ORC 파일이 포함되어있는 경우
, 다음 위의 명령은 큰 파일로 병합합니다. RCFile의 경우 병합은 블록 수준에서 발생하지만 ORC 파일의 경우 병합이 스트라이프 수준에서 발생하므로 데이터 압축 풀기 및 디코딩의 오버 헤드가 발생하지 않습니다. 또한 ORC Stripes
는 :
ORC 파일의 본문은 줄무늬의 시리즈로 구성되어 있습니다. 줄무늬는 대개 크기가 크고 (일반적으로 ~ 200MB) 서로 독립적이며 은 다른 작업으로 처리됩니다. 열 형식 저장 형식의 특징을 정의하면 각 열의 데이터는 으로 별도로 저장되며 파일에서 데이터를 읽는 것은 읽은 열의 수인 에 비례해야합니다. ORC 파일에서 각 열은 파일에서 서로 옆에 에 저장된 여러 스트림에 저장됩니다. 예를 들어, 정수 열은 두 개의 스트림 PRESENT로 표현되는 이며 값이 null이 아닌 경우 값 기록 당 비트가있는 값을 사용하고 이 아닌 값을 기록하는 DATA를 사용합니다. 스트라이프의 모든 열 값이 null이 아닌 경우 PRESENT 스트림이 스트라이프에서 생략됩니다. 이진 데이터의 경우 ORC 은 PRESENT, DATA 및 LENGTH의 세 가지 스트림을 사용하며 각 값의 길이는 입니다. 각 유형에 대한 자세한 내용은 하위 섹션 인 에 나와 있습니다.
스파크에서 구현을 위해 당신이 불꽃 컨텍스트의 도움으로 SparkSQL를 사용할 수 있습니다
scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
scala> sqlContext.sql("Your_hive_query_here")