Skip to main content
 首页 » 编程设计

python之Spark 读取二进制文件的子组

2024年10月24日33bonelee

有没有一种简单的方法可以使用 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 读取这些文件而不将它们复制到另一个目录中,因为它们是大文件?

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

一些提示:我正在研究正则表达式,因此我可以将自定义字符串传递给 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))