如何在 PySpark 中使用 read.csv 跳过多行

cph*_*sto 6 csv header apache-spark pyspark

.csv有几列,我希望'n'在使用spark.read.csv()函数将此文件导入数据帧时跳过 4 行(或一般情况下)。我有一个.csv这样的文件 -

ID;Name;Revenue
Identifier;Customer Name;Euros
cust_ID;cust_name;€
ID132;XYZ Ltd;2825
ID150;ABC Ltd;1849
Run Code Online (Sandbox Code Playgroud)

在普通的 Python 中,使用read_csv()函数时,很简单,可以使用以下skiprow=n选项来完成-

import pandas as pd
df=pd.read_csv('filename.csv',sep=';',skiprows=3) # Since we wish to skip top 3 lines
Run Code Online (Sandbox Code Playgroud)

使用 PySpark,我按如下方式导入这个 .csv 文件 -

df=spark.read.csv("filename.csv",sep=';') 
This imports the file as -
ID          |Name         |Revenue
Identifier  |Customer Name|Euros
cust_ID     |cust_name    |€
ID132       |XYZ Ltd      |2825
ID150       |ABC Ltd      1849
Run Code Online (Sandbox Code Playgroud)

这是不正确的,因为我希望忽略前三行。我不能使用选项,'header=True'因为它只会排除第一行。可以使用'comment='选项,但为此需要行以特定字符开头,而我的文件并非如此。我在文档中找不到任何内容。有没有办法做到这一点?

may*_*wal 5

我无法为您的问题找到简单的解决方案。尽管无论标题如何编写,这都会起作用,

df = spark.read.csv("filename.csv",sep=';')\
          .rdd.zipWithIndex()\
          .filter(lambda x: x[1] > n)\
          .map(lambda x: x[0]).toDF()
Run Code Online (Sandbox Code Playgroud)