如何读取内存中的JSON字符串到Spark DataFrame



我正在尝试将内存中的JSON 字符串读取为Spark DataFrame:

var someJSON : String = getJSONSomehow()
val someDF : DataFrame = magic.convert(someJSON)

我花了相当多的时间看Spark API,我能找到的最好的是使用sqlContext这样:

var someJSON : String = getJSONSomehow()
val tmpFile : Output = Resource
    .fromFile(s"/tmp/json/${UUID.randomUUID().toString()}")
tmpFile.write("hello")(Codec.UTF8)
val someDF : DataFrame = sqlContext.read().json(tmpFile)

但这感觉有点尴尬/不稳定,并施加了以下约束:

  1. 它要求我将JSON格式为每行一个对象(每个文档);和
  2. 它迫使我将JSON写入临时文件,这是缓慢和尴尬的;和
  3. 它迫使我随着时间的推移清理临时文件,这很麻烦,对我来说感觉"错误"

所以我问:是否有一种直接和更有效的方法将JSON字符串转换为Spark DataFrame?

From Spark SQL guide:

val otherPeopleRDD = spark.sparkContext.makeRDD(
"""{"name":"Yin","address":{"city":"Columbus","state":"Ohio"}}""" :: Nil)
val otherPeople = spark.read.json(otherPeopleRDD)
otherPeople.show()

从中间RDD(通过传递String创建)创建一个DataFrame。

相关内容

  • 没有找到相关文章

最新更新