2016-11-09 10 views
8

मैं एक पांडा डेटा फ्रेम my_df है के बाद निर्धारित नहीं किया जा सकता है, और my_df.dtypes हमें देता है:pyspark: ValueError: प्रकार के कुछ निष्कर्ष निकालते

ts    int64 
fieldA   object 
fieldB   object 
fieldC   object 
fieldD   object 
fieldE   object 
dtype: object 

तो मैं एक चिंगारी आंकड़ों के पांडा डेटा फ्रेम my_df कन्वर्ट करने के लिए कोशिश कर रहा हूँ नीचे करके फ्रेम:

ValueErrorTraceback (most recent call last) 
<ipython-input-29-d4c9bb41bb1e> in <module>() 
----> 1 spark_my_df = sc.createDataFrame(my_df) 
     2 spark_my_df.take(20) 

/usr/local/spark-latest/python/pyspark/sql/session.py in createDataFrame(self, data, schema, samplingRatio) 
    520    rdd, schema = self._createFromRDD(data.map(prepare), schema, samplingRatio) 
    521   else: 
--> 522    rdd, schema = self._createFromLocal(map(prepare, data), schema) 
    523   jrdd = self._jvm.SerDeUtil.toJavaArray(rdd._to_java_object_rdd()) 
    524   jdf = self._jsparkSession.applySchemaToPythonRDD(jrdd.rdd(), schema.json()) 

/usr/local/spark-latest/python/pyspark/sql/session.py in _createFromLocal(self, data, schema) 
    384 
    385   if schema is None or isinstance(schema, (list, tuple)): 
--> 386    struct = self._inferSchemaFromList(data) 
    387    if isinstance(schema, (list, tuple)): 
    388     for i, name in enumerate(schema): 

/usr/local/spark-latest/python/pyspark/sql/session.py in _inferSchemaFromList(self, data) 
    318   schema = reduce(_merge_type, map(_infer_schema, data)) 
    319   if _has_nulltype(schema): 
--> 320    raise ValueError("Some of types cannot be determined after inferring") 
    321   return schema 
    322 

ValueError: Some of types cannot be determined after inferring 
:

spark_my_df = sc.createDataFrame(my_df) 

हालांकि, मैं निम्न त्रुटियों मिला

क्या किसी को पता है कि उपर्युक्त त्रुटि का क्या अर्थ है? धन्यवाद!

उत्तर

7

फ़ील्ड प्रकार का अनुमान लगाने के लिए, PySpark प्रत्येक फ़ील्ड में गैर-कोई भी रिकॉर्ड नहीं देखता है। यदि किसी फ़ील्ड में केवल कोई रिकॉर्ड नहीं है, तो PySpark प्रकार का अनुमान नहीं लगा सकता है और वह त्रुटि उठाएगा।

0

और इस समस्या को ठीक करने के लिए, आप अपनी खुद की परिभाषित स्कीमा प्रदान कर सकते हैं।

उदाहरण के लिए:

>>> from pyspark.sql.types import StructType, StructField, StringType, DoubleType 
>>> schema = StructType([StructField("name", StringType(), True), StructField("score", DoubleType(), True)]) 
>>> df = spark.createDataFrame([[None, None]], schema=schema) 
>>> df.show() 
+----+-----+ 
|name|score| 
+----+-----+ 
|null| null| 
+----+-----+ 
:

>>> df = spark.createDataFrame([[None, None]], ["name", "score"]) 

त्रुटि को ठीक करने के लिए:

त्रुटि पुन: पेश करने के लिए

संबंधित मुद्दे