Dataframe 创建数据帧时输出不正确
我正在尝试使用scala应用程序从kafka主题中流式传输数据。我能够从主题中获取数据,但是如何从中创建数据帧呢 这是数据(字符串格式) 我尝试了几种方法,但没有得到令人满意的结果Dataframe 创建数据帧时输出不正确,dataframe,apache-kafka,spark-streaming,Dataframe,Apache Kafka,Spark Streaming,我正在尝试使用scala应用程序从kafka主题中流式传输数据。我能够从主题中获取数据,但是如何从中创建数据帧呢 这是数据(字符串格式) 我尝试了几种方法,但没有得到令人满意的结果 +--------------------+ | _1| +--------------------+ |{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve.
+--------------------+ | _1|
+--------------------+ |{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve...|
|{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve...|
|{"action":"AppEve...| |{"action":"AppEve...|
谁能告诉我如何进行映射,使每个字段都进入一个单独的列,如表。数据为avro格式
下面是从主题中获取数据的代码
val ssc = new StreamingContext(sc, Seconds(2))
val kafkaConf = Map[String, String]("metadata.broker.list" -> "####",
"zookeeper.connect" -> "########",
"group.id" -> "KafkaConsumer",
"zookeeper.connection.timeout.ms" -> "1000000")
val topicMaps = Map("fishbowl" -> 1)
val messages = KafkaUtils.createStream[String, String,DefaultDecoder, DefaultDecoder](ssc, kafkaConf, topicMaps, StorageLevel.MEMORY_ONLY_SER).map(_._2)
请指导我如何使用foreachRDD func和map()创建正确的数据框以从rdd创建数据框,而不考虑其案例类架构。 使用下面的逻辑
stream.foreachRDD(
rdd => {
val dataFrame = sqlContext.read.json(rdd.map(_._2))
dataFrame.show()
})
这里的流是从kafkaUtils.createStream()创建的rdd您是否尝试进行搜索?这没有什么帮助,因为我是scala新手。我不知道如何将avro[String,String]转换为数据帧。这是我的答案,谢谢Maasg发现答案做得很好。关于注释“不考虑其格式或case类模式”,这并不完全正确=>这只适用于JSON格式的记录。@maasg谢谢,先生,编辑了我的注释。正如我用avro解决的那样(它的模式仍然是json)
stream.foreachRDD(
rdd => {
val dataFrame = sqlContext.read.json(rdd.map(_._2))
dataFrame.show()
})