2017-12-13 2 views
2

AWSGlueに少し慣れています。私はAWSGlueでcsvにraw cloudwatch jsonを変換しています。変換スクリプトはかなり単純ですが、ドキュメンテーションとサンプルは包括的ではありません。トリッキーな部分は、動的なフレームに単一の動的フレーム(lable、文字列、データポイントの配列)からそれを変換(タイムスタンプ、文字列、合計、ダブル、単位、文字列のことですAWS Glueは構造体を動的フレームに変換します

{ 
"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" 
    }, 

: データ構造は、このようなものです)。 ダイナミックデータフレームでどのメソッドを使用するかわかりません。

答えて

1

私はAWSGlueがそのためのマッピング方法を提供しているとは思いません。いくつかの苦労した後、私はpysparkでの変換が比較的容易であることを発見した。

  • は、データベースからデータソースを取得

    datasource0 = glueContext.create_dynamic_frame.from_catalog(database = ...) 
    
  • がDFに変換し、

    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

関連する問題