我使用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选项被忽略。
有什么建议吗?
1条答案
按热度按时间j0pj023g1#
可以将
skipRows
参数传递给load
函数: