【问题标题】:Analyze binary NetCDF files with AWS Quicksight / Athena使用 AWS Quicksight / Athena 分析二进制 NetCDF 文件
【发布时间】:2020-09-21 14:04:28
【问题描述】:

我的任务是在 Quicksight 中分析天气预报数据。预测数据保存在公共 S3 存储桶中的 NetCDF 二进制文件中。问题是:如何将这些二进制文件的内容公开给 Quicksight 甚至 Athena?

有一些 python 库可以解码二进制文件中的数据,例如Iris。它们是这样使用的:

import iris
filename = iris.sample_data_path('forecast_20200304.nc')
cubes = iris.load(filename)
print(cubes)

那么创建数据摄取管道所需的 AWS 工作流程和服务是什么:

  1. 响应 SQS 消息,表明有新的二进制文件可用
  2. 访问新的二进制文件并对其进行解码以访问预测数据
  3. 将解码后的数据添加到之前 SQS 通知中已解码的数据集中
  4. 在 Athena / Quicksight 中提供所有解码数据

棘手的,这个...

【问题讨论】:

    标签: amazon-athena netcdf amazon-quicksight


    【解决方案1】:

    我会做的大概是这样的:

    在 Python 中编写一个 Lambda 函数,当新文件出现在 S3 存储桶中时触发该函数 - 通过 S3 通知(如果您控制存储桶)、通过 SNS、SQS 或通过 EventBridge 中的计划。该函数使用您问题中包含的代码片段来转换每个新文件并将转换后的数据上传到另一个 S3 存储桶。

    我不知道这些文件的大小以及它们的发布频率,因此您必须决定是否转换为 CSV、JSON 或 Parquet - 如果数据很小,CSV 可能是最简单的,并且会足够好。

    在新的 S3 存储桶中使用转换后的数据,您只需为数据集创建一个 Athena 表并开始使用 QuickSight。

    如果您最终得到很多小文件,您可能希望实施第二步,每天一次将转换后的文件合并成更大的文件,可能还有 Parquet,但除非您必须这样做,否则不要这样做.


    另一种方法是使用Athena Federated Query:通过实现响应来自 Athena 的特定调用的 Lambda 函数,您可以让 Athena 读取您想要的任何数据源。它目前处于预览阶段,据我所知,所有示例代码都是用 Java 编写的——但理论上可以用 Python 编写 Lambda 函数。

    我不确定它是否会比实施您建议的 ETL 工作流程少,但您的工作流程是 Athena Federated Query 设计的用例之一,可能值得研究。如果 NetCDF 文件很常见,并且此类文件的数据源对其他人有用,我相信 Athena 团队很乐意与您交谈并帮助您。

    【讨论】:

    • 回复太棒了,@Theo。很好的解释,提供了选项,优点和缺点。每个 Stack Overflow 的答案应该如何。谢谢!
    • @Aardvark 您在哪里能够成功地将 netCDF 文件转换为 parquet 或 csv?
    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 2021-06-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多