Pyspark无法区分CSV罚款,而Pandas却无法

时间:2019-12-21 13:26:46

标签: python pandas pyspark

在pyspark中,我正在尝试读取包含几个文本列的CSV文件。我对pandas的{​​{1}}属性做了同样的事情,它读起来很好。但是,当我尝试通过pyspark运行SQL来对相同的数据进行处理时,它会以一种怪异的方式解析数据:

chunksize

输出为:

df = spark.read.csv("data_simple.csv", sep=',', header=True, inferSchema=False) 
df.createOrReplaceTempView("table")
spark.sql("""
SELECT new_category from table
""").show(20)

期望值类似于+--------------------+ | new_category| +--------------------+ | IAB3 - Business| | IAB22 - Shopping| | IAB17 - Sports| | IAB1-7 - Television| |https://cinpaketi...| | turgut özal _acc...| | sulak alan _a3pl...| | IAB20 - Travel| | ACJumpStart| | belki eve dönüş ...| | hardcore ve jung...| |IAB13 - Personal ...| |000 sq . ft . sta...| | IAB12 - News| | Posta Kutusu 7:0...| | IAB5 - Education| | General| | Education| | fingerstyle | | Blogs| +--------------------+ only showing top 20 rows 等。但是似乎它也从其他列中获取了值。

我是pyspark的新手,我错过了什么吗?为什么要这样解析?

此外,某些列包含非常长的文本,因此大约20k个字符。当我将IAB3 - Business传递为True时,它会引发错误:inferSchema

此外,最后,我只想按java.lang.ArrayIndexOutOfBoundsException按表分组并显示计数。当我第一次这样做时,它会引发错误:

  

Py4JJavaError:调用o51.showString时发生错误。   :org.apache.spark.SparkException:由于阶段失败而中止作业:阶段1.0中的任务0失败1次,最近一次失败:阶段1.0中的任务0.0丢失(TID 1,本地主机,执行者驱动程序):com.univocity.parsers .common.TextParsingException:java.lang.ArrayIndexOutOfBoundsException-20480   提示:处理的列数可能已超过20480列的限制。使用settings.setMaxColumns(int)定义输入可以具有的最大列数   确保配置正确,并使用与您要解析的输入格式匹配的定界符,引号和转义序列

我在第一次之后第二次运行它时,出现此错误:

  

Py4JJavaError:调用o105.showString时发生错误。   :org.apache.spark.SparkException:由于阶段失败而中止作业:阶段3.0中的任务0失败1次,最近一次失败:阶段3.0中的任务0.0(TID 6,本地主机,执行程序驱动程序)丢失:com.univocity.parsers .common.TextParsingException:java.lang.ArrayIndexOutOfBoundsException-null

它的代码是:

new_category

如果您需要,我可以提供其他信息。谢谢。

0 个答案:

没有答案