json - 如何在Spark上将JSON字符串转换为数据帧

标签 json scala apache-spark dataframe

我想将下面的字符串变量转换为spark上的dataframe。

val jsonStr = "{ "metadata": { "key": 84896, "value": 54 }}"

我知道如何从json文件创建数据框。
sqlContext.read.json("file.json")

但我不知道如何从字符串变量创建数据框。

如何将json字符串变量转换为dataframe。

最佳答案

对于Spark 2.2+:

import spark.implicits._
val jsonStr = """{ "metadata": { "key": 84896, "value": 54 }}"""
val df = spark.read.json(Seq(jsonStr).toDS)

对于Spark 2.1.x:
val events = sc.parallelize("""{"action":"create","timestamp":"2016-01-07T00:01:17Z"}""" :: Nil)    
val df = sqlContext.read.json(events)

Hint: this is using sqlContext.read.json(jsonRDD: RDD[Stirng]) overload. There is also sqlContext.read.json(path: String) where it reads a Json file directly.



对于older versions:
val jsonStr = """{ "metadata": { "key": 84896, "value": 54 }}"""
val rdd = sc.parallelize(Seq(jsonStr))
val df = sqlContext.read.json(rdd)

关于json - 如何在Spark上将JSON字符串转换为数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38271611/

相关文章:

mysql JSON_SET 无法插入具有 NULL 值的列(5.7+)

json - Jersey 在 Spring 中实现 ContextResolver<JAXBContext>

Scalaz 等价于 forM_

Scala,通用元组

java - Spark 告诉我功能列是错误的

python - Pyspark 将列表列转换为嵌套结构列

json - 我有一个凌乱的 JSON,我正在尝试使用 jq 清理它

javascript - 将内部 json 数组与空格组合,将外部数组与换行符组合

scala - 元组的高阶函数

scala - 线程 “main”中的Apache Spark异常java.lang.NoClassDefFoundError : scala/collection/GenTraversableOnce$class