Spark读二进制文件子组



是否有一种简单的方法来读取仅包含在具有Spark API(我使用PySpark API)和binaryFiles方法的目录中的给定文件集?

假设我有一个这样的文件夹:

/temp
  a.bin
  b.bin
  ...
  y.bin
  z.bin

我想读取g.b bin, j.b bin, d.b bin, z.b bin, l.b bin, a.b bin, i.b bin, h.b bin(这些是随机名称,可以在每次请求时更改)。

我如何使用binaryFiles读取这些文件,而不将它们复制到另一个目录,因为它们是大文件?

现在,我正在创建一个带有符号链接的文件夹,我使用binaryFiles('./*')来读取文件夹中的所有链接。但我认为它不适合长期使用。

一些提示:我正在调查regexp,所以我可以传递给binaryFiles一个自定义字符串来选择适当的文件,但解决方案可能在其他地方,帮助是非常受欢迎的。

谢谢。

对于单个字母前缀,您可以简单地使用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))

最新更新