2017-06-02 104 views
0

此代碼:數據不被填充數據框 - PySpark

TypeError: StructType can not accept object 'str' in type <class 'str'> 

我不是正確定義的架構:

schema = StructType([StructField('p', StringType(), False),StructField('h', StringType(), False) 
        ,StructField('q', IntegerType(), False),StructField('r', IntegerType(), False)]) 
rdd = sc.parallelize(['str' , 'str' , 1 , 1]) 
sqlContext.createDataFrame(rdd, schema).show() 

返回錯誤?排序是字符串,字符串,int,int,所以爲什麼不能用rdd = sc.parallelize(['str' , 'str' , 1 , 1])進行初始化?

回答

2

你需要用列表的列表,其中每個子列表是行初始化RDD:

rdd = sc.parallelize([['str' , 'str' , 1 , 1]]) 
sqlContext.createDataFrame(rdd, schema).show() 
+---+---+---+---+ 
| p| h| q| r| 
+---+---+---+---+ 
|str|str| 1| 1| 
+---+---+---+---+