Amazon s3 如何将.wav文件目录添加到Kedro数据目录?
这是我第一次尝试使用这个软件包 我有一个s3存储桶中的.wav文件列表,我很想知道如何在Kedro数据目录中使用它们Amazon s3 如何将.wav文件目录添加到Kedro数据目录?,amazon-s3,kedro,Amazon S3,Kedro,这是我第一次尝试使用这个软件包 我有一个s3存储桶中的.wav文件列表,我很想知道如何在Kedro数据目录中使用它们 有什么想法吗?我认为目前还没有一种数据集格式可以处理.wav文件。您将需要构建一个使用以下内容的应用程序-没有听起来那么多的工作 这将使您能够在目录中执行以下操作: 数据集: 类型:my_custom_path.WaveDataSet filepath:path/to/individual/wav_file.wav#这可以是一个s3://url 然后,您可以在Kedro管道中以
有什么想法吗?我认为目前还没有一种数据集格式可以处理
.wav
文件。您将需要构建一个使用以下内容的应用程序-没有听起来那么多的工作
这将使您能够在目录中执行以下操作:
数据集:
类型:my_custom_path.WaveDataSet
filepath:path/to/individual/wav_file.wav#这可以是一个s3://url
然后,您可以在Kedro管道中以本机方式访问WAV数据。您可以对每个.wav
文件执行此操作
如果您希望能够访问整个文件夹中的wav文件,您可能希望探索“包装器”数据集的概念,如文档中所示的数据集。这很有效:
import pandas as pd
from pathlib import Path, PurePosixPath
from kedro.io import AbstractDataSet
class WavFile(AbstractDataSet):
'''Used to load a .wav file'''
def __init__(self, filepath):
self._filepath = PurePosixPath(filepath)
def _load(self) -> pd.DataFrame:
df = pd.DataFrame({'file': [self._filepath],
'data': [load_wav(self._filepath)]})
return df
def _save(self, df: pd.DataFrame) -> None:
df.to_csv(str(self._filepath))
def _exists(self) -> bool:
return Path(self._filepath.as_posix()).exists()
def _describe(self):
return dict(filepath=self._filepath)
class WavFiles(PartitionedDataSet):
'''Replaces the PartitionedDataSet.load() method to return a DataFrame.'''
def load(self)->pd.DataFrame:
'''Returns dataframe'''
dict_of_data = super().load()
df = pd.concat(
[delayed() for delayed in dict_of_data.values()]
)
return df
my_partitioned_dataset = WavFiles(
path="path/to/folder/of/wav/files/",
dataset=WavFile,
)
my_partitioned_dataset.load()
这基本上是可行的,但为什么不干脆删除
partitioneddata集
,让WavFile.load
接受一个目录(以独占方式,或者您可以对目录v/s文件进行条件设置)?是,最后,我做了一些处理S3连接的逻辑。你是否考虑过使用<代码> FSSPEC像其他的KDRO数据集一样,在后台(以及任何其他远程文件系统)自动地为S3连接服务?我没有,但是这是个好主意。我来看看。