【发布时间】:2019-05-12 11:40:14
【问题描述】:
我的 RDD 的每一行看起来都像这样:
[{"date":1.533204038E12,"time":1.533204038E12,"num":"KD10617029","type":"item","vat":0}]
我的功能:
def writeToES(data: java.util.List[String]): Unit = {
val conf: SparkConf = new SparkConf().setAppName("ESWriter").setMaster("local")
val sc: SparkContext = new SparkContext(conf)
val sql: SQLContext = new SQLContext(sc)
val spark: SparkSession = sql.sparkSession
sc.setLogLevel("ERROR")
import spark.implicits._
val dataList = data.toArray()
//println("datalist size: "+dataList.size)
val dataDF = sc.parallelize(dataList)
.map(x=>x.toString)
.map(x=>x.split(","))
.map(x=>Row.fromSeq(x))
.map(x=>x.mkString(",")).toDF()
dataDF.show()
dataDF.take(1).toList.foreach(println)
println(dataDF.take(1).length)
}
如何从列表中的字符串化 json 中获取“键”... 以及如何将每个 json 的值作为 rdd(或数据框)中的一行获取
【问题讨论】:
-
您可以将字符串直接转换为数据框。看看这里的一些答案:stackoverflow.com/questions/38271611/…
标签: json scala apache-spark rdd