我尝试使用带有此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返回
_read_with_length中的~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/serializers.py
(自身,流) 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
_parse_datatype_json_value(json_value)中的~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
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):
(.0)中的~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
第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”])
_parse_datatype_json_value(json_value)中的~/anaconda3/envs/naboo-env/lib/python3.6/site-packages/pyspark/sql/types.py
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)
有人可以帮助我解决此问题吗?
谢谢
答案 0 :(得分:2)
似乎其中一列中的数据类型有问题。因此,它的抛出错误。读取时删除inferSchema = True选项。读取数据后,尝试分析数据类型并根据需要进行任何更正,然后应用您自己的模式。