복붙노트

[HADOOP] Hive의 '테이블 <테이블 이름> 연결'작업을 어떻게 변경합니까?

HADOOP

Hive의 '테이블 <테이블 이름> 연결'작업을 어떻게 변경합니까?

나는 큰 오크 파일의 k (작은) 번호로 병합하려는 작은 크기의 오크 파일을 n (큰) 번호로 가지고 있습니다.

이것은 Hive에서 alter table table_name concatenate 명령을 사용하여 수행됩니다.

하이브가 어떻게 구현하는지 이해하고 싶습니다. 필자는 필요한 경우 Spark을 사용하여이를 구현하려고합니다.

어떤 포인터가 좋을 것입니다.

해결법

  1. ==============================

    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")
    
  2. from https://stackoverflow.com/questions/41820925/how-does-hive-alter-table-table-name-concatenate-work by cc-by-sa and MIT license