Dataframe 创建数据帧时输出不正确

Dataframe 创建数据帧时输出不正确,dataframe,apache-kafka,spark-streaming,Dataframe,Apache Kafka,Spark Streaming,我正在尝试使用scala应用程序从kafka主题中流式传输数据。我能够从主题中获取数据,但是如何从中创建数据帧呢 这是数据(字符串格式) 我尝试了几种方法,但没有得到令人满意的结果 +--------------------+ | _1| +--------------------+ |{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve...| |{"action":"AppEve.

我正在尝试使用scala应用程序从kafka主题中流式传输数据。我能够从主题中获取数据,但是如何从中创建数据帧呢

这是数据(字符串格式)

我尝试了几种方法,但没有得到令人满意的结果

 +--------------------+ |                  _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()
        })