PySpark从列表中排除文件

时间:2017-01-13 08:45:31

标签: apache-spark pyspark

当我使用sc.textFile('*.txt')时,我会把所有东西都拿走。

我希望能够过滤掉几个文件。

e.g。如何处理除[' bar.txt',' foo.txt']以外的所有文件?

2 个答案:

答案 0 :(得分:1)

这是一种解决方法:

获取文件列表:

import os
file_list = os.popen('hadoop fs -ls <your dir>').readlines()

过滤它:

file_list = [x for x in file_list if (x not in ['bar.txt','foo.txt')
             and x[-3:]=='txt']

阅读:

rdd = sc.textFile(['<your dir>/'+x for x in file list])

答案 1 :(得分:-1)

PySpark在从S3读取多个文件时将跳过空的实木复合地板文件。 在读取文件时使用S3A,它将跳过空文件。 唯一的条件是必须有一些非空文件。不能都是空文件。

files_path = 's3a://my-buckket/obj1/obj2/data'
df = spark.read.parquet(files_path)