2017-01-13 86 views
0

我正在使用pyspark(1.6)和elasticsearch-hadoop(5.1.1)。我從elasticsearch得到我的數據轉換成RDD格式通過:Pyspark將rdd轉換爲空值的數據幀

es_rdd = sc.newAPIHadoopRDD(            
    inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",   
    keyClass="org.apache.hadoop.io.NullWritable",       
    valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable",  
    conf=es_read_conf) 

這裏es_read_conf只是我的ES集羣的字典,如SC的SparkContext對象。這工作正常,我得到rdd對象罰款。

我想將其轉換爲使用

df = es_rdd.toDF() 

一個數據幀,但我得到的錯誤:

ValueError: Some of types cannot be determined by the first 100 rows, please try again with sampling 

給toDF方法的採樣大小會導致同樣的錯誤。據我所知,這是發生,因爲pyspark無法確定每個領域的類型。我知道我的elasticsearch集羣中有全部爲空的字段。

將此轉換爲數據框的最佳方法是什麼?

回答

1

告訴你要轉換的Spark類型數據的最好方法。請參閱createDataFrame文檔與第五個示例(內部爲StructType