和
如果我们提供JSON字符串,read.schema().json()似乎提供相同的功能?
编辑:
我似乎找到了第三种选择:
[JsonRDD.jsonStringtoRow](https://spark.apache.org/docs/1.3.0/api/java/org/apache/spark/sql/json/JsonRDD.html#jsonStringToRow(org.apache.spark.rdd.RDD,org.apache.spark.sql.types.StructType,java.lang.String))
答案 0 :(得分:1)
SQLContext.createDataframe(RDD, StructType)
这里,第一个参数是字符串的RDD,它不是JSON格式。它需要是Row
的RDD。
SQLContext.read().schema(StructType).json(RDD)
这里,参数RDD应该是一个json格式的字符串。
答案 1 :(得分:1)
如果您有JSON数据集,则可以使用Scala中的spark.read.json
将其加载到数据框中。来自Spark documentation:
val df = spark.read.json("examples/src/main/resources/people.json")
// Displays the content of the DataFrame to stdout
df.show()
// +----+-------+
// | age| name|
// +----+-------+
// |null|Michael|
// | 30| Andy|
// | 19| Justin|
// +----+-------+
当您的RDD包含createDataFrame(rdd)
个对象时, Row
将起作用。 Spark会infer the data types,或者你可以specify the schema(除非你确定你的数据不包含任何特殊的东西,否则我会推荐。)