Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何将.wav文件目录添加到Kedro数据目录?_Amazon S3_Kedro - Fatal编程技术网

Amazon 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管道中以

这是我第一次尝试使用这个软件包

我有一个s3存储桶中的.wav文件列表,我很想知道如何在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连接服务?我没有,但是这是个好主意。我来看看。