繁体   English   中英

从Kafka上的JSON消息创建Spark Streaming中的Spark DataFrame

[英]Create Spark DataFrame in Spark Streaming from JSON Message on Kafka

我正在Scala中实现Spark Streaming,我从Kafka主题中提取JSON字符串,并希望将它们加载到数据帧中。 有没有办法做到这一点,Spark从RDD [String]中推断出自己的架构?

是的,您可以使用以下内容:

sqlContext.read
//.schema(schema) //optional, makes it a bit faster, if you've processed it before you can get the schema using df.schema
.json(jsonRDD)  //RDD[String]

我现在正试图这样做。 我很好奇你是如何从卡夫卡那里得到RDD [String]的,我仍然认为Spark + Kafka只做流媒体而不是“立即取出那里的东西”一次性批量。 :)

在spark 1.4中,您可以尝试以下方法从rdd生成Dataframe:

  val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
  val yourDataFrame = hiveContext.createDataFrame(yourRDD)

您可以使用以下代码读取来自Kafka的消息流,提取JSON值并将它们转换为DataFrame:

val messages = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder](ssc, kafkaParams, topicsSet)

messages.foreachRDD { rdd =>
//extracting the values only
  val df = sqlContext.read.json(rdd.map(x => x._2))
  df.show()
}

流媒体上没有架构推断。 您始终可以读取文件并从中提取架构。 您还可以将文件提交到版本控制并将其放在s3存储桶中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM