Python 在luigi中使用HDF5数据集(不要与HDF混淆)作为目标
从我对文档的阅读来看,luigi设计用于以文本文件或原始二进制文件为目标。我正在尝试为现有的处理管道构建一个luigi工作流,该管道使用HDF5文件,因为在常规文件系统上使用h5py有很多优点。此工作流中的某些任务不会创建整个新文件,而是将新数据集添加到现有HDF文件中。使用h5py,我将读取具有以下内容的数据集:Python 在luigi中使用HDF5数据集(不要与HDF混淆)作为目标,python,h5py,hdf,luigi,Python,H5py,Hdf,Luigi,从我对文档的阅读来看,luigi设计用于以文本文件或原始二进制文件为目标。我正在尝试为现有的处理管道构建一个luigi工作流,该管道使用HDF5文件,因为在常规文件系统上使用h5py有很多优点。此工作流中的某些任务不会创建整个新文件,而是将新数据集添加到现有HDF文件中。使用h5py,我将读取具有以下内容的数据集: hdf = h5py.File('filepath','r') hdf['internal/path/to/dataset'][...] 使用以下内容编写数据集: hdf = h5
hdf = h5py.File('filepath','r')
hdf['internal/path/to/dataset'][...]
使用以下内容编写数据集:
hdf = h5py.File('filepath','r')
hdf['internal/path/to/dataset'][...]
hdf['internal/path/to/dataset']=np.arraydata
并测试HDF文件中的数据集是否与此行一起存在:
hdf中的“内部/path/to/dataset”
我的问题是,有没有办法让luigi适应这些类型的文件?
我对luigi文档的阅读让我觉得我可能可以将luigi.format.format子类化,或者将LocalTarget子类化,并创建一个自定义的“open”方法。但我找不到任何关于如何实现这一点的例子。非常感谢您的建议 具有HDF5 pandas实现,可以轻松扩展以保存pandas数据帧以外的数据
import d6tflow
from d6tflow.tasks.h5 import TaskH5Pandas
import pandas as pd
class Task1(TaskH5Pandas):
def run(self):
df = pd.DataFrame({'a':range(10)})
self.save(df)
class Task2(d6tflow.tasks.TaskCachePandas):
def requires(self):
return Task1()
def run(self):
df = self.input().load()
# use dataframe from HDF5
d6tflow.run([Task2])
了解如何扩展。h5py是HDF5文件的接口。HDFS与基于JAVA的文件系统完全不同。我在luigi文档中看到了关于HDFS的内容,但没有看到关于HDF5的内容。在其中一个数据库模块上建模如何?我还没有实现这一点,但这正是我想要的,谢谢!