Processar o Spark Streaming rdd e armazenar em um único arquivo HDFS
Estou usando o Kafka Spark Streaming para obter dados de streaming.
val lines = KafkaUtils.createDirectStream[Array[Byte], String, DefaultDecoder, StringDecoder](ssc, kafkaConf, Set(topic)).map(_._2)
Estou usando este DStream e processando RDDs
val output = lines.foreachRDD(rdd =>
rdd.foreachPartition { partition =>
partition.foreach { file => runConfigParser(file)}
})
runConfigParser
é um método JAVA que analisa um arquivo e produz uma saída que eu tenho que salvar no HDFS. Portanto, vários nós processam o RDD e gravam a saída em um único arquivo HDFS. Como eu quero carregar este arquivo no HIVE.
devo emitir o resultado derunConfigParser
E usesc.parallze(output).saveAsTextFile(path)
de modo que todos os meus nós gravem saídas RDD em um único arquivo HDFS. Esse design é eficiente?
Carregarei esse único arquivo HDFS (que será atualizado constantemente como dados de streaming) no HIVE e consultarei usando o Impala.