Я впервые пытаюсь использовать пакет Kedro.
У меня есть список файлов .wav в корзине s3, и я очень хочу знать, как сделать их доступными в каталоге данных Kedro.
Есть предположения?
Я впервые пытаюсь использовать пакет Kedro.
У меня есть список файлов .wav в корзине s3, и я очень хочу знать, как сделать их доступными в каталоге данных Kedro.
Есть предположения?
Я не верю, что в настоящее время существует формат набора данных, который обрабатывает .wav
файлы. Вам нужно будет создать собственный набор данных, который использует что-то вроде Wave - не так много работы, как кажется!
Это позволит вам сделать что-то подобное в своем каталоге:
dataset:
type: my_custom_path.WaveDataSet
filepath: path/to/individual/wav_file.wav # this can be a s3://url
и затем вы можете получить доступ к своим WAV-данным непосредственно в конвейере Kedro. Вы можете сделать это для каждого .wav
файла, который у вас есть.
Если вы хотите иметь доступ к целым папкам с файлами wav, вы можете изучить понятие набора данных оболочки, например PartitionedDataSet, руководство по использованию можно найти в документации.
Это сработало:
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()
PartitionedDataSet
и позволить WavFile.load
принять каталог (либо исключительно, либо вы можете указать файл каталога v / s)?
- person Zain Patel; 28.01.2021
fsspec
, как и остальные наборы данных Kedro, автоматически позаботится о подключении S3 в фоновом режиме (и любых других удаленных файловых системах!)?
- person Zain Patel; 29.01.2021