Spark结构化流媒体,生成.c000.csv文件

时间:2019-01-14 22:23:51

标签: apache-spark hive apache-kafka spark-structured-streaming

我正在尝试从kafka主题中获取数据,并将其推送到hdfs位置。我正面临以下问题。

每条消息(kafka)之后,hdfs位置都会使用.c000.csv格式的零件文件进行更新。我在HDFS位置的顶部创建了一个配置单元表,但是HIVE无法读取从spark写入的任何数据结构化流。

以下是Spark结构化流式传输之后的文件格式

  part-00001-abdda104-0ae2-4e8a-b2bd-3cb474081c87.c000.csv

这是我要插入的代码:

val kafkaDatademostr = spark.readStream.format("kafka").option("kafka.bootstrap.servers","ttt.tt.tt.tt.com:8092").option("subscribe","demostream").option("kafka.security.protocol","SASL_PLAINTEXT").load

val interval=kafkaDatademostr.select(col("value").cast("string")) .alias("csv").select("csv.*")

val interval2=interval.selectExpr("split(value,',')[0] as rog" ,"split(value,',')[1] as vol","split(value,',')[2] as agh","split(value,',')[3] as aght","split(value,',')[4] as asd")

//   interval2.writeStream.outputMode("append").format("console").start()
       interval2.writeStream.outputMode("append").partitionBy("rog").format("csv").trigger(Trigger.ProcessingTime("30 seconds")).option("path", "hdfs://vvv/apps/hive/warehouse/area.db/test_kafcsv/").start()

有人可以帮助我,为什么创建这样的文件?

如果我做dfs -cat /part-00001-ad35a3b6-8485-47c8-b9d2-bab2f723d840.c000.csv,我可以看到我的值...。但是由于格式问题,它不能用蜂巢读取。

1 个答案:

答案 0 :(得分:0)

此c000文件是临时文件,流数据在其中写入数据。当您处于追加模式时,spark executor拥有该writer线程,这就是为什么在运行时您无法使用hive序列化程序读取它的原因,尽管hadoop fs -cat可以正常工作。