Athenaを利用してS3バケットにあるJSONファイルをParquet形式に変換するときにHIVE_TOO_MANY_OPEN_PARTITIONSというエラーが発生したので原因調査して対策を考えてみました。Parquet形式とはなんぞ?という方は下記が参考になると思います。Parquethttps://parquet.apache.org/documentation/latest/データを列指向フォーマットにすることで、クエリ実行時のデータ読み込みサイズを抑えてコスト削減できて(゚д゚)ウマーとなります。Parquetはパーケイと読むそうです。ほくそ笑むhttps://hoxo-m.hatenablog.com/entry/20150910/p1再現手順エラーを再現させて対策する手順となります。下準備S3バケットを用意してJSONファイルをアップロードします。Athenaでテーブルを作成します。Athenaでワークグループの設定やクエリ実行結果を保存するS3バケットを指定済みとします。's3://<S3バケット名>/json/';AWSマネジメントコンソールでクエリを実行して完了すると以下のようなメッセージが表示されるので、パーティションをロードします。sampledb.hoge_json;これでS3バケットからデータが読み込めるようになります。AS)で新しいテーブルとデータファイルを作成することができるので、これをJSONからParquet形式への変換に利用します。SELECTクエリで作成します。WITHでパーティションやデータ形式、データファイルを保存するS3バケットを指定します。sampledb.hoge_json;これを実行するとエラーとなります。エラー内容エラー内容は下記となり、1度に開くことができるパーティションは100まで。要は1度に作成できるパーティション数は100まで。制限の引き上げをリクエストできます。データカタログを使用します。全般のリファレンスhttps://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_service_limits.html#limits_glueなので、あくまでも1度に作成するパーティション数の上限は100ということみたいです。Athenaの裏で動いているPrestoというクエリエンジンの制限のようです。グループhttps://groups.google.com/forum/#!topic/presto-users/5gFbvUoOF5Iパーティションの書き込み時に多くのマシンに分散するように設計されていてhive.max-partitions-per-writerrsって設定でデフォルト100になってる。パーティション分割にはHiveを利用しているそうなのでそうなのでしょう。Athenahttps://docs.aws.amazon.com/ja_jp/athena/latest/ug/partitions.htmlデータをパーティション分割することで、各クエリでスキャンするデータの量を制限し、パフォーマンスの向上とコストの削減を達成できます。クエリ実行はPrestoだそうです。含むさまざまな標準データ形式で機能します。Qiitahttps://qiita.com/haramiso/items/122d4ea0e5660e0b4e41もう少し調べてみたところしっかりと公式ドキュメントにも記載がありました。個の一意のパーティションとバケットの組み合わせへの書き込みがサポートされます。個のパーティションを指定できます。個のパーティションが許可されます。この数を超えると、エラーが発生します。バケット化というのがまだわかってないので追って調べようかと思います。作成するパーティション数が100を超える場合はクエリを複数に分けるのがよさそうなので試してみます。SELECTでパーティション作成されるようにします。0としてデータ投入されないようにします。SELECTクエリのWHEREで投入するデータを絞り込みます。sampledb.hoge_parquet;これでパーティション数が100を超える場合にも対処できるようになりました。初期投入時以外は細かく変換して投入するのが良さそうです。クエリでも作成するパーティション数が100を超えるとエラーとなります。SELECTで同じデータを投入した場合、主キーがないのでエラーもなくデータは重複して投入されるので注意が必要です。パーティション数の制限値は厳密に100ではなさそうエラーメッセージに100となるので、それに従っておけばよいわけですが、エラー再現させるのにしきい値を確認してみたら、どうも厳密には100ではなさそうでした。スクリーンショットを取り忘れましたが最大でパーティション数が150でもエラーがでなかったりと。裏でスケールアウトして制限値が調整されていたり???マネージドなサービスで裏の仕組みはわからないので、おとなしくエラーメッセージに従うのが良さそうです。甲2018/7にJOIN。最近の好みはサーバレスです。なんでもとりあえず試します。S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。MON僕はまたAthenaのPartitionで死に申した。cloudpack.。