5

我对 AWSGlue 有点陌生。我正在使用 AWSGlue 将原始 cloudwatch json 转换为 csv。转换脚本非常简单,但是文档和示例似乎并不全面。数据结构是这样的:

{
"Label": "RequestCount",
"Datapoints": [
    {
        "Timestamp": "2017-07-23T00:00:00Z",
        "Sum": 41960.0,
        "Unit": "Count"
    },
    {
        "Timestamp": "2017-07-30T00:00:00Z",
        "Sum": 46065.0,
        "Unit": "Count"
    },
    {
        "Timestamp": "2017-08-24T00:00:00Z",
        "Sum": 43915.0,
        "Unit": "Count"
    },

棘手的部分是将其从单个动态帧(标签、字符串、数据点数组)转换为动态帧(时间戳、字符串、总和、双精度、单位、字符串)。我不确定在动态数据框中使用哪种方法。

4

1 回答 1

11

我认为 AWSGlue 没有为它提供任何映射方法。经过一番挣扎,我发现在pyspark中转换相对容易。这是伪代码:

  • 从数据库中检索数据源

    datasource0 = glueContext.create_dynamic_frame.from_catalog(database = ...)
    
  • 将其转换为 DF 并在 spark 中转换

    mapped_df = datasource0.toDF().select(explode(col("Datapoints")).alias("collection")).select("collection.*")
    
  • 转换回 DynamicFrame 并继续其余的 ETL 过程

    mapped_datasource0 = DynamicFrame.fromDF(mapped_df, glueContext, "mapped_datasource0");
    

感谢这个参考

于 2017-12-14T14:46:32.763 回答