복붙노트

[HADOOP] Hive HDFS의 각 삽입에 대한 다중 작은 파일 만들기

HADOOP

Hive HDFS의 각 삽입에 대한 다중 작은 파일 만들기

다음은 이미 달성되었다.

이것은 지금까지 잘 작동하는 동안. 내 응용 프로그램은 하이브 테이블에 데이터를 삽입하는 동안, 그것은 하나의 파일 당 각 행 데이터가있는 작은 파일을 만들면서 직면 한 유일한 문제가 있습니다.

아래 코드는

// Define which topics to read from
  val topic = "topic_twitter"
  val groupId = "group-1"
  val consumer = KafkaConsumer(topic, groupId, "localhost:2181")

//Create SparkContext
  val sparkContext = new SparkContext("local[2]", "KafkaConsumer")

//Create HiveContext  
  val hiveContext = new org.apache.spark.sql.hive.HiveContext(sparkContext)

  hiveContext.sql("CREATE EXTERNAL TABLE IF NOT EXISTS twitter_data (tweetId BIGINT, tweetText STRING, userName STRING, tweetTimeStamp STRING,   userLang STRING)")
  hiveContext.sql("CREATE EXTERNAL TABLE IF NOT EXISTS demo (foo STRING)")

하이브 데모 테이블이 이미 하나의 레코드로 채워져 있습니다.

해결법

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

    1.[take 2] OK, 당신은 Hive에 데이터를 적절하게 "스트리밍"할 수 없습니다. 하지만 정기 압축 후 처리 작업을 추가 할 수 있습니다 ...

    [take 2] OK, 당신은 Hive에 데이터를 적절하게 "스트리밍"할 수 없습니다. 하지만 정기 압축 후 처리 작업을 추가 할 수 있습니다 ...

    마지막 문장 : 하이브가 각 압축 작업에 너무 많은 파일을 생성하는 경우 세션의 일부 매개 변수를 INSERT 직전에 조정 해보십시오.

    set hive.merge.mapfiles =true;
    set hive.merge.mapredfiles =true;
    set hive.merge.smallfiles.avgsize=1024000000;
    
  2. ==============================

    2.Hive는 트랜잭션이 아닌 대규모 일괄 처리를 위해 설계되었습니다. 그래서 각 LOAD 또는 INSERT-SELECT 명령에 대해 적어도 하나의 데이터 파일을 가지고 있습니다. 또한 INSERT-VALUES 명령이없는 이유이기도합니다. 따라서 필요한 해결 방법으로 게시물에 불완전한 구문이 표시됩니다.

    Hive는 트랜잭션이 아닌 대규모 일괄 처리를 위해 설계되었습니다. 그래서 각 LOAD 또는 INSERT-SELECT 명령에 대해 적어도 하나의 데이터 파일을 가지고 있습니다. 또한 INSERT-VALUES 명령이없는 이유이기도합니다. 따라서 필요한 해결 방법으로 게시물에 불완전한 구문이 표시됩니다.

    음 ... 거래 지원이 도입 될 때까지는 사실이었습니다. 간단히 말해서 (a) Hive V0.14 이상 (b) 해당 테이블에서 활성화 된 ORC 테이블 (c) 트랜잭션 지원 (즉, 잠금, 주기적 배경 압축 등)

    하이브에서 스트리밍 데이터 수집에 대한 위키가 좋은 시작일 수 있습니다.

  3. ==============================

    3.이 옵션들을 함께 사용할 수 있습니다.

    이 옵션들을 함께 사용할 수 있습니다.

  4. from https://stackoverflow.com/questions/32096347/hive-create-multi-small-files-for-each-insert-in-hdfs by cc-by-sa and MIT license