如何在Spark中加载标题在第五行且有多行记录的CSV文件?

8yoxcaq7  于 2022-12-13  发布在  Apache
关注(0)|答案(1)|浏览(132)

我使用Spark 3.2.1
我的目标是读取一个CSV文件,该文件的标题位于第5行,并且还有一些多行记录。
读取多行记录的解决方案如下:

sourcePath = "s3://mybucket/location/file.csv"
df = spark.read.csv(sourcePath, multiLine=True)

读取第5行标题的解决方案如下:

sourcePath = "s3://mybucket/location/file.csv"
source_rdd = spark.sparkContext.textFile(sourcePath).zipWithIndex().filter(lambda x: x[1] > int(4)).map(lambda x: x[0])
df = spark.read.csv(source_rdd, header=True)

当我想同时使用这两种解决方案时,就会出现问题:

skip_rows=4
sourcePath = "s3://mybucket/location/file.csv"
source_rdd = spark.sparkContext.textFile(sourcePath).zipWithIndex().filter(lambda x: x[1] > int(skip_rows)).map(lambda x: x[0])
df = spark.read.csv(source_rdd, header=True, multiLine=True)

当我传递RDD而不是源路径时,multiLine选项被忽略。
有什么建议吗?

j0pj023g

j0pj023g1#

可以将skipRows参数传递给load函数:

sourcePath = "s3://mybucket/location/file.csv"

df = spark.read.format("csv").option("header", "true").option("multiLine", "true").load(sourcePath, skipRows=4)

相关问题