pySpark(V2.4)DataFrameReader增加导致的空白列名(pySpark (v2.

2019-10-29 11:45发布

下面是我有一个CSV文件的一个片段:

"Index", "Living Space (sq ft)", "Beds", "Baths", "Zip", "Year", "List Price ($)"
 1,       2222,                   3,      3.5,    32312, 1981,    250000
 2,       1628,                   3,      2,      32308, 2009,    185000
 3,       3824,                   5,      4,      32312, 1954,    399000
 4,       1137,                   3,      2,      32309, 1993,    150000
 5,       3560,                   6,      4,      32309, 1973,    315000

奇怪的是,当我执行以下pySpark(V2.4)声明,标题列名(减去第一列)拥有领先的空格。 我已经尝试了不同的quoteescape options ,但无济于事。

有谁知道为什么发生这种情况,以及如何剥去加载额外的空格? 先感谢您!

>>> csv_file = '/tmp/file.csv'

>>> spark_reader.format('csv')

>>> spark_reader.option("inferSchema", "true")
>>> spark_reader.option("header", "true")
>>> spark_reader.option("quote", '"')

>>> df = spark_reader.load(csv_file)

>>> df.columns
['Index', ' "Living Space (sq ft)"', ' "Beds"', ' "Baths"', ' "Zip"', ' "Year"', ' "List Price ($)"']

Answer 1:

从文档的pyspark.sql.DataFrameReader ,您可以使用ignoreLeadingWhiteSpace参数。

ignoreLeadingWhiteSpace - 指示从值被读取是否领先空格的标志应当被跳过。 如果没有设置,它使用默认值,为false。

在你的情况,你只需要添加:

spark_reader.option("ignoreLeadingWhiteSpace", "true")


文章来源: pySpark (v2.4) DataFrameReader adds leading whitespace to column names