我对阿斯圭有点陌生。我正在使用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"
},
棘手的部分是将它从单个动态帧(Lable、String、DATooPoT数组)转换成动态帧(时间戳、字符串、求和、双、单位、字符串)。
我不确定在动态数据帧中使用哪种方法。
最佳答案
我不认为AWSGlue提供了任何映射方法。经过一番挣扎,我发现Pyspark中的转换相对容易。下面是伪代码:
从数据库检索数据源
datasource0 = glueContext.create_dynamic_frame.from_catalog(database = ...)
将其转换为df并在spark中进行转换
mapped_df = datasource0.toDF().select(explode(col("Datapoints")).alias("collection")).select("collection.*")
转换回动态框架并继续ETL过程的其余部分
mapped_datasource0 = DynamicFrame.fromDF(mapped_df, glueContext, "mapped_datasource0");
感谢this reference