HDFS 使用Spark阅读除一个文件外的整个目录

lrpiutwd  于 2022-12-09  发布在  HDFS
关注(0)|答案(1)|浏览(196)

我有以下包含这些CSV文件的目录:

/data/one.csv
/data/two.csv
/data/three.csv
/data/four.csv

如果我想阅读一切,我可以简单地做:

/data/*.csv

但我似乎不能阅读所有的东西,除了four.csv
这一点:

/data/*[^four]*.csv

似乎工作,但我认为,如果文件列表将更大,比这种阅读方式可能是错误的(因为双通配符)。
有什么好办法可以做到这一点吗?我也意识到:

/data/{one,two,three,^four}.csv

我可以解决这个特定的情况,但是我需要except方法以备将来之需。
非常感谢!

mcvgt66p

mcvgt66p1#

我不是100%确定这个方法是否有效,但是你可以试试。你可以使用Bash/Python或者其他脚本来扫描文件夹中的所有csv文件,但是不能使用名称为four.csv的文件。spark的输入将是(假设你有文件:一个.csv、两个.csv、三个.csv、四个.csv、五个.csv...最多n个.csv文件)PathToFiles=[/data/one.csv, /data/two.csv, /data/three.csv, /data/five.csv, ..., /data/n.csv]
然后,您可以使用(代码是python)filesRDD = spark.sparkContext.wholeTextFiles(",".join(PathToFiles))
我用java写过类似的代码,在我的印象中,它很有效,你可以试试。

相关问题