/home/by-natures/dev*

ソフトウェア開発者としての技術的なメモと、たまに普通の日記。

2019/03/12 DynamicFrame の書き出し

Glue の書き出しは結局 "from_options" で

Glue Job による DynamicFrame のデータ書き出し方法には書き出し方法がいくつかあって、 from_options を使っていたのですが、ふとドキュメントを見ていると from_catalog というメソッドが。

Glue Job を使う以上、Glue DataCatalog に寄せたい気持ちがあります。現状は from_options で Parquet ファイルを書き出してそれを DataCatalog 経由で読む…ということをしていますが、DataCatalog に存在するテーブルに追記し、DataCatalog からデータを読み込む、となると運用がシンプルで分かりやすいです。

しかし少し触ってみたところ、パーティション指定がある場合(from_catalog を使いたいタイミングだと、大抵パーティションはあると思うんですが)は from_options をお勧めします。というのも

  • from_catalog を使って書き込んでも、テーブルのパーティション情報は無視され、S3 の保存場所のルートに直接出力されてしまう
  • additional_options というパラメータがあり、そこに pathpartitionKeys を指定することは可能。ただしその場合はテーブルの保存場所は無視される
  • データ保存に際し、テーブルとの型チェックが行われることはない様子(int, bigint で確認したのみですが)

という挙動をして、変に from_catalog を使うよりは from_options で細かく制御できた方がよいなと思った次第です。

正しい使い方はこうだ、というのがあればご指摘ください。

メモ

調べてたリンクです、メモのみ

stackoverflow.com

createOrReplaceTempView した瞬間に RDD としてキャッシュされるのかと思っていましたが、明示的に cache 指定しないとそうはならないようです。しかも lazy とあるので、どちらにせよ createOrReplaceTempView には何も起こらず、処理が行われた場合にキャッシュするかどうか、ということのようです。

blog.codeship.com

Beanstalk VS CodeDeploy, みたいな記事が多いですが、CodeDeploy を使って Beanstalk をリリースできる、といった内容です。