Hive Erstelle mehrere kleine Dateien für jede Einfügung in HDFS

folgend wurde bereits erreicht

Kafka Producer ruft mit Spark Streaming Daten von Twitter ab.Kafka Consumer, der Daten in die externe Hive-Tabelle (in HDFS) aufnimmt.

während dies soweit gut funktioniert. Es gibt nur ein Problem, mit dem ich konfrontiert bin. Meine App fügt zwar Daten in die Hive-Tabelle ein, erstellt jedoch eine kleine Datei mit den einzelnen Zeilendaten pro Datei.

unten ist der Code

// 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)")

Bienenstoc Demo-Tabelle, die bereits mit einem einzigen Datensatz gefüllt ist. Kafka Consumer-Schleife durch die Daten für topic = "topic_twitter" in Bearbeitung jeder Zeile und Auffüllen in der Hive-Tabelle

val hiveSql = "INSERT INTO TABLE twitter_data SELECT STACK( 1," + 
    tweetID        +","  + 
    tweetText      +"," + 
    userName       +"," +
    tweetTimeStamp +","  +
    userLang + ") FROM demo limit 1"

hiveContext.sql(hiveSql)

unten sind die Bilder aus meiner Hadoop-Umgebung.twitter_data, demo

Letzte 10 in HDFS erstellte Dateien

Wenn Sie sehen können, dass die Dateigröße nicht mehr als 200 KB beträgt, kann ich diese Dateien in einer Datei zusammenführen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage