Обработайте Spark Streaming rdd и сохраните в один файл HDFS
Я использую Kafka Spark Streaming для потоковой передачи данных.
val lines = KafkaUtils.createDirectStream[Array[Byte], String, DefaultDecoder, StringDecoder](ssc, kafkaConf, Set(topic)).map(_._2)
Я использую этот DStream и обрабатываю RDD
val output = lines.foreachRDD(rdd =>
rdd.foreachPartition { partition =>
partition.foreach { file => runConfigParser(file)}
})
runConfigParser
это метод JAVA, который анализирует файл и производит вывод, который я должен сохранить в HDFS. Таким образом, несколько узлов будут обрабатывать RDD и записывать вывод в один файл HDFS. Как я хочу загрузить этот тьфу в HIVE.
я должен вывести результатrunConfigParser
и использоватьsc.parallze(output).saveAsTextFile(path)
так, что все мои узлы будут записывать выходные данные RDD в один файл HDFS. Эффективен ли этот дизайн?
Я загружу этот единственный файл HDFS (который будет постоянно обновляться в виде потоковых данных) в HIVE и буду запрашивать его с помощью Impala.