我有以下包含这些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方法以备将来之需。
非常感谢!
1条答案
按热度按时间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写过类似的代码,在我的印象中,它很有效,你可以试试。