我正在尝试将一段内存中的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)
但是这种方式感觉有点尴尬和不稳定,并具有以下限制:
- 它要求我将我的JSON格式化为每行一个对象(根据文档);并且
- 它强制我将JSON写入临时文件,这很慢而且很麻烦;并且
- 它迫使我随着时间的推移清理临时文件,这很繁琐并且让我感觉“不对劲”
因此,我想问:是否有一种直接且更有效的方法将JSON字符串转换为Spark DataFrame?