如何在kedro中处理庞大的数据集

eaw*_*wer 5 python kedro

我有相当大的(~200Gb,~20M 行)原始 jsonl 数据集。我需要从那里提取重要的属性并将中间数据集存储在 csv 中以进一步转换为 HDF5、parquet 等。显然,我不能JSONDataSet用于加载原始数据集,因为它pandas.read_json在幕后使用,并使用 pandas如此规模的数据集听起来是个坏主意。所以我正在考虑逐行读取原始数据集,逐行处理并将处理后的数据附加到中间数据集。

我无法理解的是如何使其AbstractDataSet与它的_load_save方法兼容。

PS 我知道我可以将其移出 kedro 的上下文,并将预处理数据集作为原始数据集引入,但这有点破坏了完整管道的整个想法。

gil*_*rio 4

尝试使用 pyspark 来利用延迟计算和批量执行。SparkDataSet在kedro.contib.io.spark_data_set中实现

jsonl 的示例目录配置:

your_dataset_name:   
  type: kedro.contrib.io.pyspark.SparkDataSet
  filepath: "\file_path"
  file_format: json
  load_args:
    multiline: True
Run Code Online (Sandbox Code Playgroud)