如何在 kedro 中处理庞大的数据集
How to process huge datasets in kedro
我有相当大的(~200Gb,~2000 万行)原始 jsonl 数据集。我需要从那里提取重要的属性并将中间数据集存储在 csv 中,以便进一步转换为 HDF5、parquet 等。显然,我不能使用 JSONDataSet
来加载原始数据集,因为它利用 pandas.read_json
,并使用 pandas 作为这种大小的数据集听起来是个坏主意。所以我正在考虑逐行读取原始数据集,处理并将处理后的数据逐行附加到中间数据集。
我无法理解的是如何通过其 _load
和 _save
方法使其与 AbstractDataSet
兼容。
P.S。我知道我可以将其移出 kedro 的上下文,并将预处理数据集作为原始数据集引入,但这有点打破了完整管道的整个想法。
尝试使用 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
我有相当大的(~200Gb,~2000 万行)原始 jsonl 数据集。我需要从那里提取重要的属性并将中间数据集存储在 csv 中,以便进一步转换为 HDF5、parquet 等。显然,我不能使用 JSONDataSet
来加载原始数据集,因为它利用 pandas.read_json
,并使用 pandas 作为这种大小的数据集听起来是个坏主意。所以我正在考虑逐行读取原始数据集,处理并将处理后的数据逐行附加到中间数据集。
我无法理解的是如何通过其 _load
和 _save
方法使其与 AbstractDataSet
兼容。
P.S。我知道我可以将其移出 kedro 的上下文,并将预处理数据集作为原始数据集引入,但这有点打破了完整管道的整个想法。
尝试使用 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