違いはなんですか? DynamicFrameがAWS Glue用に作成されたことは知っていますが、AWS GlueはDataFrameもサポートしています。 AWS GlueでDynamicFrameを使用する必要があるのはいつですか?
ここでドキュメントを参照できます:DynamicFrame Class。それは言う、
DynamicFrameはDataFrameに似ていますが、各レコードが自己記述的であるため、最初はスキーマは必要ありません。
DynamicFrame
を使用したい場合
注:toDF()
を使用してDynamicFrame
をDataFrame
に変換することもできます
メモリを多用するジョブを処理する場合、DynamicFrameの方が安全です。 「AWS Glueダイナミックフレームを使用したエグゼキューターのメモリは安全なしきい値を超えることはありません」一方、Spark= DataFrameはエグゼキューターの「メモリ不足」の問題を引き起こす可能性があります。( https ://docs.aws.Amazon.com/glue/latest/dg/monitor-profile-debug-oom-abnormalities.html )
DynamicFrameは、宣言されたスキーマがない可能性のある乱雑なデータを処理するときに最大の柔軟性を提供するように設計されています。レコードは、データ内のスキーマの不整合に関する情報を保持する柔軟な自己記述的な方法で表されます。
たとえば、要件が変更されると、一部のレコードに文字列として格納された住所列が、構造体として後の行に格納される場合があります。失敗したり、文字列にフォールバックしたりするのではなく、DynamicFramesは両方のタイプを追跡し、ユーザーにこれらの不整合を解決する方法のいくつかのオプションを提供し、ResolveChoice変換を介した細粒度の解決オプションを提供します。
DynamicFramesは、DataFramesにはない強力な高レベルETL操作も多数提供します。たとえば、Relationalize変換を使用して、複雑なネストデータをリレーショナルデータベースへの転送に適したテーブルにフラット化およびピボットできます。さらに、ApplyMapping変換は、宣言的な方法で複雑な名前変更とキャストをサポートします。
DynamicFramesはAWS Glueデータカタログとも統合されているため、テーブルからフレームを作成するのは簡単な操作です。データベースへの書き込みは、パスワードを指定せずに接続を介して行うことができます。さらに、DynamicFramesはジョブブックマークと統合されているため、ジョブシステムでこれらのスクリプトを実行すると、スクリプトが暗黙的に読み取りと書き込みの内容を追跡できます。( https://github.com/aws-samples/aws -glue-samples/blob/master/FAQ_and_How_to.md )