AWS Glue将结构转换为动态框架

时间:2017-12-13 05:20:20

标签: python amazon-web-services aws-glue

我对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"
    },

棘手的部分是将它从单个动态帧(标签,字符串,数据点阵列)转换为动态帧(Timestamp,string,Sum,Double,Unit,String)。 我不确定在动态数据帧中使用哪种方法。

1 个答案:

答案 0 :(得分:7)

我不认为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");
    

感谢this reference