我有两条管道。第一个管道从s3读取文件并进行一些处理和更新文件。第二个管道运行多个作业,对于每个作业,我从s3下载文件并生成一些输出。我觉得我在第二条管道上浪费了很多时间,因为我目前在多个作业中使用这些文件时没有缓存这些文件。因此,我试图在本地缓存s3文件
我做了一些研究,发现可以使用s3fs或fsspec。到目前为止,我能够使用s3fs从s3下载并打开一个文件,但我不知道如何在本地缓存它
import s3fs
import pandas as pd
FS = s3fs.S3FileSystem()
file = FS.open('s3://my-datasets/something/foo.csv')
# of = fsspec.open("filecache::s3://bucket/key", s3={'anon': True}, filecache={'cache_storage'='/tmp/files'})
df = pd.read_csv(file, sep='|', header=None)
print(df)
正如您在上面的代码中所看到的,我正在从s3打开一个文件,然后将其读取到一个数据帧。现在我想知道是否有一个参数或我可以传递的东西,以便该文件得到缓存
当然,另一种方法是我可以检查文件是否存在于某个路径中,如果存在,则使用该路径,如果不存在,则下载该文件,但我觉得必须有更好的方法来进行缓存。我愿意接受任何建议
AmazonS3是一个对象存储服务,可以通过经过身份验证的API请求访问
诸如
s3fs
之类的工具将AmazonS3表示为一个文件系统,但它们需要将这种用法转换为正常的S3API调用。在S3或本地s3fs虚拟磁盘中进行大量更新时,更新另一端可能需要一些时间,在高使用率情况下,它们可能会变得不同步s3fs保留文件缓存的事实意味着文件可能会更快地失去同步,这取决于它返回并检查S3中的内容是否已更改的频率
这基本上是在应用程序和S3之间增加了另一层复杂性。如果你能直接去,它总是更可靠。但是,这意味着您可能需要自己实现一些有用的功能
如果您打算在生产环境中使用它,我建议您创建一个模拟适当使用级别的测试平台,以确认所有系统都能按预期工作
相关问题 更多 >
编程相关推荐