2016-12-07 13 views
0

createDataframe如果我正在閱讀JSON字符串,SQLContext.createDataframe(RDD,StructType)與SQLContext.read()。schema(StructType).json(RDD)之間的區別?

read.schema().json()似乎起到相同的作用,如果我們放棄在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

createDataFrame方法不接受JSON字符串的RDD –

+0

此外,您使用scala標記了該標記,但是您已鏈接到JavaDoc –

回答

1

SQLContext.createDataframe(RDD, StructType)這裏,第一個參數是不是JSON格式的字符串的RDD。它需要是RDD的。

SQLContext.read().schema(StructType).json(RDD)這裏,參數RDD應該是一個json格式的字符串。

1

如果您有JSON數據集,可以使用Scala中的spark.read.json將其加載到數據框中。從Spark documentation:當您的RDD包含對象

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| 
// +----+-------+ 

createDataFrame(rdd)會工作。 Spark將infer the data types,或者你可以specify the schema(我會建議,除非你確定你的數據不包含任何奇怪的東西)。