无法读取pyspark

时间:2019-09-26 09:08:13

标签: python csv pyspark

我尝试使用带有此pyspark代码的pyspark读取csv文件:

tr_df = spark.read.csv("/data/file.csv",
                       header=True, inferSchema=True
                      )
tr_df.head(5)

但是我得到这个错误:

ValueError                                Traceback (most recent call last)
<ipython-input-53-03432bbf269d> in <module>
----> 1 tr_df.head(5)

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/dataframe.py
     

在头上(自己,n)          1250 rs = self.head(1)          1251返回rs [0](如果rs其他)无       -> 1252返回self.take(n)          1253          1254 @ignore_unicode_prefix

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/dataframe.py
     

in take(self,num)           569 [行(年龄= 2,名字= u'Alice'),行(年龄= 5,名字= u'Bob')]           570“”“       -> 571返回self.limit(num).collect()           572           573 @since(1.3)

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/dataframe.py
     

在collect(自己)中           532使用SCCallSiteSync(self._sc)作为CSS:           (533)sock_info = self._jdf.collectToPython()       -> 534返回列表(_load_from_socket(sock_info,BatchedSerializer(PickleSerializer())))           535           536 @ignore_unicode_prefix

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/serializers.py
     

在load_stream(自身,流)中           145而True:           146尝试:       -> 147 yield self._read_with_length(stream)           148除了EOFError:           149返回

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/serializers.py
     _read_with_length中的

(自身,流)           170如果len(obj)<长度:           171提高EOFError       -> 172返回self.loads(obj)           173           174 def dumps(自己,obj):

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/serializers.py
     

在加载中(自身,obj,编码)           578如果sys.version> ='3':           579个def加载(自身,obj,encoding =“ bytes”):       -> 580 return pickle.loads(obj,encoding = encoding)           第581章           582默认加载量(self,obj,encoding = None):

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
     

在_parse_datatype_json_string(json_string)中           867 >>> check_datatype(complex_maptype)           868“”“       -> 869返回_parse_datatype_json_value(json.loads(json_string))           870           871

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
     _parse_datatype_json_value(json_value)中的

          884 tpe = json_value [“ type”]           第885章真相大白       -> 886返回_all_complex_types [tpe] .fromJson(json_value)           第887章           888返回UserDefinedType.fromJson(json_value)

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
     

在fromJson(cls,json)中           第575章           576 def fromJson(cls,json):       -> 577返回StructType([[StructField.fromJson(f)for json [“ fields”]]中的f)           578           579 def fieldNames(self):

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
     (.0)中的

          第575章           576 def fromJson(cls,json):       -> 577返回StructType([[StructField.fromJson(f)for json [“ fields”]]中的f)           578           579 def fieldNames(self):

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
     

在fromJson(cls,json)中           432 def fromJson(cls,json):           433返回StructField(json [“ name”],       -> 434 _parse_datatype_json_value(json [“ type”]),           435 json [“ nullable”],           436 json [“ metadata”])

~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
     _parse_datatype_json_value(json_value)中的

          880 return DecimalType(int(m.group(1)),int(m.group(2)))           第881章       -> 882提高ValueError(“无法解析数据类型:%s”%json_value)           其他883           884 tpe = json_value [“ type”]

ValueError: Could not parse datatype: decimal(17,-24)

有人可以帮助我解决此问题吗?

谢谢

1 个答案:

答案 0 :(得分:2)

似乎其中一列中的数据类型有问题。因此,它的抛出错误。读取时删除inferSchema = True选项。读取数据后,尝试分析数据类型并根据需要进行任何更正,然后应用您自己的模式。