pySpark(v2.4)DataFrameReader在列名中添加前导空格

时间:2018-12-06 16:55:39

标签: apache-spark pyspark apache-spark-sql

这是我拥有的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 ($)"']

1 个答案:

答案 0 :(得分:2)

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

  

ignoreLeadingWhiteSpace –一个标志,指示是否应跳过正在读取的值中的前导空格。如果设置为None,则使用默认值false。

您的情况下,您只需要添加:

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