是否有一种简单的方法可以使用Spark API(我使用PySpark API)和binaryFiles方法只读取目录中包含的给定文件集?
我们说我有一个这样的文件夹:
/temp
a.bin
b.bin
...
y.bin
z.bin
我想阅读g.bin,j.bin,d.bin,z.bin,l.bin,a.bin,i.bin,h.bin(这些是随机名称,可能会在每次请求时更改)。
如何使用binaryFiles读取这些文件而不将它们复制到另一个目录中,因为它们是大文件?
目前,我正在创建一个带符号链接的文件夹,我使用binaryFiles(' ./*')来读取文件夹中的所有链接。但我不认为它可以长期使用。
一些提示:我正在研究正则表达式,所以我可以将二进制文件传递给自定义字符串以选择正确的文件,但解决方案可能在其他地方并且帮助非常受欢迎。
感谢。
答案 0 :(得分:2)
使用单字母前缀,您只需使用glob模式:
sc.binaryFiles('[gjdzlaih].bin')
如果名称更复杂,则可以更容易地提供以逗号分隔的文件列表:
files = ['g.bin', 'j.bin', 'd.bin', 'z.bin', 'l.bin', 'a.bin', 'i.bin', 'h.bin']
sc.binaryFiles(','.join(files))