我对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)。 我不确定在动态数据帧中使用哪种方法。
答案 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");