Skip to main content
 首页 » 编程设计

python之如何将 csv 文件的子集作为 Spark RDD

2024年10月24日25mengfanrong

我是 Spark 的新手,我正在尝试读取一个 csv 文件并获取文件中的第一列和第二列。但问题是 csv 文件很大,我对解析 csv 文件中的每一行不感兴趣。此外,运行 collect() 函数可能会使进程崩溃,因为内存可能不足以支持返回的数据量。所以我想知道是否有可能只用 csv 数据的一个子集创建一个 RDD。例如,是否可以生成包含 csv 文件第 10 到 1000 行的 RDD,而忽略其他行。

现在,我只有

csvdata = sc.textFile("hdfs://nn:port/datasets/sample.csv").map(lambda line: line.split(",")) 

这基本上为整个 csv 文件创建了一个 RDD。是否可以从仅包含第 10 到 1000 行的 csvdata 创建 RDD?

非常感谢您提供的帮助。

请您参考如下方法:

您可以加载所有内容并按索引过滤:

rdd = sc.parallelize(range(0, -10000, -1)) 
rdd.zipWithIndex().filter(lambda kv: 9 <= kv[1] < 999).keys() 

根据您定义第 10 行的方式调整范围。