我希望将此 api 的结果转换为数据帧
val url = api
val result = scala.io.Source.fromURL(url).mkString
val df = spark.read.json(result).toDF()
在上面的代码中,我不能只调用结果。有什么方法可以将结果转换为数据帧吗?
您可以通过
多种方式在 Spark 中创建数据帧。
示例 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 -> case 类进行转换
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()