gpt4 book ai didi

java - 在 AWS Lambda 函数上创建 Parquet 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:27 26 4
gpt4 key购买 nike

我在 S3 上收到一组 (1 Mb) CSV/JSON 文件,我想将其转换为 Parquet。我期望能够使用 Lambda 函数轻松地将这些文件转换为 Parquet。

在查看 Google 后,我没有找到没有某种 Hadoop 的解决方案。

因为这是一个文件转换,我不敢相信没有一个简单的解决方案。有人有一些 Java/Scala 示例代码来进行这种转换吗?

最佳答案

如果您的输入 JSON 文件不大(< 64 MB,超过 64 MB,lambda 可能会达到内存上限)并且具有简单的数据类型或者您愿意展平结构,您可以考虑使用 pyarrow , 尽管路线有点复杂。

它涉及使用 Pandas :

df = pd.read_json(file.json)

然后将其转换为 parquet 文件:

pq = pa.parquet.write_table(df, file.pq)

以上示例自动推断数据类型。您可以在加载 JSON 时使用参数 dtype 覆盖它。唯一的主要缺点是 pyarrow 仅支持 string, bool, float, int, date, time, decimal, list, array

更新(更通用的解决方案):

考虑使用 json2parquet .

但是,如果输入数据有嵌套字典,首先需要对其进行展平,即转换:

{a: {b: {c: d}}} to {a.b.c: d}

然后,需要使用 json2parquet 将此数据作为 pyarrow 批处理摄取:

pa_batch = j2p.ingest_data(data)

现在批处理可以作为 PyArrow 数据框加载:

df = pa.Table.from_batches([pa_batch])

并在 parquet 文件中输出:

pq = pa.parquet.write_table(df, file.pq)

关于java - 在 AWS Lambda 函数上创建 Parquet 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41504095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com