Spark读取二进制文件的子组

时间:2015-08-03 09:11:46

标签: python regex binary apache-spark pyspark

是否有一种简单的方法可以使用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(' ./*')来读取文件夹中的所有链接。但我不认为它可以长期使用。

一些提示:我正在研究正则表达式,所以我可以将二进制文件传递给自定义字符串以选择正确的文件,但解决方案可能在其他地方并且帮助非常受欢迎。

感谢。

1 个答案:

答案 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))