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?