gpt4 book ai didi

python - 使用 Databricks 处理大量 JSON (~12TB)

转载 作者:行者123 更新时间:2023-12-05 04:19:24 26 4
gpt4 key购买 nike

我正在寻找完成任务的指导/最佳实践。我想使用 Azure-Databricks 和 PySpark。

任务:加载并准备数据,以便将来能够高效/快速地进行分析。分析将涉及汇总统计、探索性数据分析,可能还包括简单的 ML(回归)。分析部分还没有明确定义,所以我的解决方案需要在这方面具有灵 active 。

数据: session 级数据 (12TB) 存储在 100 000 个单行 JSON 文件中。 JSON 模式是嵌套的,包括数组。 JSON 模式并不统一,但随着时间的推移会添加新字段 - 数据是一个时间序列。

总的来说,任务是构建一个基础设施,以便将来能够有效地处理数据。不会有新数据传入。

我最初的计划是:

  1. 将数据加载到 Blob 存储

  2. 使用 PySpark 处理数据

    • 通过读入数据框来展平
    • 另存为 Parquet (替代品?)
  3. 存储在数据库中,以便快速查询和分析数据

    • 我不确定哪种 Azure 解决方案 (DB) 适合这里
    • 当数据以高效格式(例如 parquet)存储时,我可以跳过此步骤吗?
  4. 通过从数据库(或 Parquet 中的 Blob 存储)查询数据,使用 PySpark 分析数据

这听起来合理吗?有没有人有遵循类似流程的 Material /教程,以便我可以将它们用作我的管道的蓝图?

最佳答案

是的,这听起来很合理,事实上它是相当标准的架构(通常称为 lakehouse )。通常的实现方法如下:

  • 加载到 Blob 存储中的 JSON 数据使用 Databricks Auto Loader 使用这提供了仅摄取新数据的有效方法(自上次运行以来)。您可以定期(例如每晚)触发管道,或者如果数据始终到达则连续运行它。自动加载器还处理输入数据的模式演变。

  • 处理后的数据最好存储为 Delta Lake tables由于使用了事务日志中的附加信息,因此可以提供比“普通”Parquet 更好的性能,因此可以有效地仅访问必要的数据。 (Delta Lake 构建在 Parquet 之上,但具有更多功能)。

  • 然后可以通过 Spark 代码或 Databricks SQL 访问处理后的数据(它可以更有效地进行报告等,因为它针对 BI 工作负载进行了大幅优化)。由于数据量很大,将它们存储在一些“传统”数据库中可能效率不高或者成本很高。

附注我建议使用 Delta Live Tables 来实现这一点这可以简化您的管道开发。

此外,您还可以访问 Databricks Academy,该学院提供有关 Lakehouse 架构和数据工程模式的入门类(class)。如果您无法访问它,您至少可以查看 Databricks courses published on GitHub .

关于python - 使用 Databricks 处理大量 JSON (~12TB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74795315/

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