我正在尝试从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
,我可以看到我的值...。但是由于格式问题,它不能用蜂巢读取。
答案 0 :(得分:0)
此c000文件是临时文件,流数据在其中写入数据。当您处于追加模式时,spark executor拥有该writer线程,这就是为什么在运行时您无法使用hive序列化程序读取它的原因,尽管hadoop fs -cat可以正常工作。