首页 文章

如何将内存中的JSON字符串读入Spark DataFrame

提问于
浏览
3

我正在尝试将内存中的JSON string 读取到Spark DataFrame中:

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

我花了很多时间查看Spark API,我能找到的最好的就是像这样使用_1544726:

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)

但这感觉有点尴尬/不稳定,并施加以下限制:

  • 它要求我将每行JSON格式化为一个对象(per documentation);和

  • 它迫使我把JSON写入临时文件,这很慢而且很尴尬;和

  • 它迫使我随着时间的推移清理临时文件,这很麻烦,对我来说感觉很棒"wrong"

所以我问: Is there a direct and more efficient way to convert a JSON string into a Spark DataFrame?

1 回答

  • 8

    从Spark SQL指南:

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

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

相关问题