Spark(scala):将JSON字符串转换为dataframe

时间:2017-11-01 17:53:06

标签: scala apache-spark spark-dataframe

我希望将此api的结果转换为数据帧

val url = api

val result = scala.io.Source.fromURL(url).mkString

val df = spark.read.json(result).toDF()

在上面的代码中我不能只调用结果。有没有办法将结果转换为数据帧?

1 个答案:

答案 0 :(得分:2)

您可以通过多种方式在spark中创建dataFrame。

示例1:

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession

val conf = new SparkConf()
  .setMaster("local[2]")
  .setAppName("SomeApp")

val spark = SparkSession
  .builder()
  .appName("basic example")
  .config(conf)
  .getOrCreate()

val df = spark.read.json("/Users/user/Sources/basesample/data.json")

df.show()

spark.close()

来自标准文档: https://spark.apache.org/docs/latest/sql-programming-guide.html

示例2 :以下是以手动方式执行此操作的代码。

我使用json4s从json转换 - >案例类

val sc = new SparkContext(conf)

case class Data(data1:Int, data2:Int)

val json = parse("""{"data1":52,"data2":54}""");

// Convert json string to collection of case classes
val row = json.extract[Data]

val rdd : RDD[Data] = sc.parallelize( Seq(row) )

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val df = sqlContext.createDataFrame( rdd)

sc.stop()