Athenaユースカジノ 禁止ゲーム使用して、
Icebergテーブルのパーティションを再構成ユースカジノ 禁止ゲーム
投稿日: 2025/03/12
はじめに:Icebergテーブルのユースカジノ 禁止ゲーム再構成の重要性
こんにちは、稲守です。 「Icebergテーブルのユースカジノ 禁止ゲーム設計を変更したいけど、Athenaのクエリエディタでは対応できない」とお悩みではありませんか?
前回はAmazon Data Firehoseを使用してデータをIcebergテーブルに取り込む方法について紹介しました。今回は一歩進んで、運用後に発生ユースカジノ 禁止ゲーム課題の「パーティション再構成」について解説します。Athenaノートブックエディタ(Apache Spark)を活用ユースカジノ 禁止ゲームことで、この課題をどう解決できるかを具体的な手順とともに紹介します。
ユースカジノ 禁止ゲーム再構成の必要性
データレイクの運用を続けていくと、当初想定していなかったデータアクセスパターンやコンプライアンス要件が発生ユースカジノ 禁止ゲームことがあります。例えば以下のようなケースです:
- 特定ユーザーのデータ削除リユースカジノ 禁止ゲームスト(GDPRなどの規制対応)
- アクセスパターンの変化によるユースカジノ 禁止ゲームリ最適化の必要性
- データ保持ポリシーの変更に伴う効率的なデータ管理
これらの要件に対応ユースカジノ 禁止ゲームため、パーティション戦略の見直しは重要な運用タスクとなります。
例えば、特定のユーザーのアクティビティデータを削除ユースカジノ 禁止ゲーム必要が生じた場合、ユーザーごとにパーティションが設定されていれば簡単ですが、前回作成したテーブルでは日付単位でのパーティション設計となっています。
CREATE TABLE iceberg_database.device_activity_logs (
event_id STRING,
event_time TIMESTAMP,
device_id STRING,
latitude DOUBLE,
longitude DOUBLE,
user_id STRING
)
PARTITIONED BY (
day(event_time)
)
LOCATION 's3://amzn-s3-demo-bucket/iceberg_database/device_activity_logs/'
TBLPROPERTIES (
'table_type' = 'ICEBERG',
'optimize_rewrite_delete_file_threshold' = '10'
)
残念ながら、Athenaのクエリエディタではパーティション定義の変更に対応していません。そこで今回は、Athenaノートブックエディタ(Apache Spark)を活用して、既存のIcebergテーブルのパーティション構成を変更ユースカジノ 禁止ゲーム方法について詳しく解説します。この方法を理解ユースカジノ 禁止ゲームことで、データの柔軟な管理や効率的な削除操作が可能になります。
STEP 1: Athenaワークグループ(Apache Spark)を設定ユースカジノ 禁止ゲーム
Athena コンソールからワークグループ設定を選択し、新しいワークグループを作成していきます。
ワークグループの詳細
ワークグループ名
を設定します。

分析エンジン
Apache Spark
を選択します。エンジンバージョンはデフォルトのPySpark engine version 3
のままにします。(それ以外選択できません)

追加設定
追加設定でデフォルトを使用をオンにします。 デフォルト設定とした場合、IAMロール及びS3バケットが作成されます。 (IAMロールおよびユースカジノ 禁止ゲームリ結果の出力先を指定したい場合は、個別に設定をします)

作成されたIAMロールにGlueのアクセス許可を追加
作成されたロール(AWSAthenaSparkExecutionRole-XXXXXXX)に追加でGlueとS3のアクセス許可をインラインポリシーで追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BaseGluePermissions",
"Effect": "Allow",
"Action": [
"glue:CreateDatabase",
"glue:DeleteDatabase",
"glue:GetCatalog",
"glue:GetCatalogs",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:UpdateDatabase",
"glue:CreateTable",
"glue:DeleteTable",
"glue:BatchDeleteTable",
"glue:UpdateTable",
"glue:GetTable",
"glue:GetTables",
"glue:BatchCreatePartition",
"glue:CreatePartition",
"glue:DeletePartition",
"glue:BatchDeletePartition",
"glue:UpdatePartition",
"glue:GetPartition",
"glue:GetPartitions",
"glue:BatchGetPartition",
"glue:StartColumnStatisticsTaskRun",
"glue:GetColumnStatisticsTaskRun",
"glue:GetColumnStatisticsTaskRuns",
"glue:GetCatalogImportStatus"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:ListBucket",
"s3:DeleteObject",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket/*",
"arn:aws:s3:::amzn-s3-demo-bucket"
]
}
]
}
STEP 2: ノートブックエディタでIcebergテーブルのパーティションを追加ユースカジノ 禁止ゲーム
Athena ユースカジノ 禁止ゲーム開く
Athenaコンソールからユースカジノ 禁止ゲーム
を開き、ユースカジノ 禁止ゲーム
を作成します。

ユースカジノ 禁止ゲーム作成
ユースカジノ 禁止ゲーム名を入力します。 追加のテーブル形式で、Apache Iceberg
を選択します。 Iceberg用の設定値が入るので、プロパティを追加し、キー値:spark.sql.iceberg.handle-timestamp-without-timezone
、値:true
を追加します。 (プロパティを追加
ユースカジノ 禁止ゲームと画面の追加のテーブル形式
はカスタム
に変わります)

データ参照の確認
ノートブックの作成を行うと、ユースカジノ 禁止ゲームが開くのでテーブルを参照できるか確認します。

うまく検索できました。
ユースカジノ 禁止ゲームの追加
ユーザーIDを対象に100個のバケットのユースカジノ 禁止ゲームを追加します。
# ユースカジノ 禁止ゲーム
spark.sql("""
ALTER TABLE spark_catalog.iceberg_database.device_activity_logs
ADD PARTITION FIELD bucket(100, user_id)
""")
bucket(100, user_id)
を使用ユースカジノ 禁止ゲーム理由は、ユーザーIDの値域が広く、そのままパーティション化ユースカジノ 禁止ゲームと小さなファイルが多数生成される可能性があるためです。バケット化により、ユーザーIDを100個のグループにハッシュ分散させ、効率的なデータ管理が可能になります。ユースカジノ 禁止ゲームが追加されていることを確認します。
# ユースカジノ 禁止ゲーム
create_table_df = spark.sql("""
SHOW CREATE TABLE spark_catalog.iceberg_database.device_activity_logs
""")
create_table_sql = create_table_df.collect()[0][0]
print(create_table_sql)
# ユースカジノ 禁止ゲームの出力
Calculation started (calculation_id=a4cababb-9fed-a773-ff2e-80344239d178) in (session=facabab0-1b6b-0b36-6f7b-ef6e1a622602). Checking calculation status...
Progress: 100%
elapsed time = 00:02s
Calculation completed.
CREATE TABLE spark_catalog.iceberg_database.device_activity_logs (
`event_id` STRING,
`event_time` TIMESTAMP,
`device_id` STRING,
`latitude` DOUBLE,
`longitude` DOUBLE,
`user_id` STRING)
USING iceberg
PARTITIONED BY (day(event_time), bucket(100, user_id))
LOCATION 's3://amzn-s3-demo-bucket/iceberg_database/device_activity_logs'
TBLPROPERTIES(
'athena.optimize.rewrite.delete-file-threshold' = '10',
'current-snapshot-id' = '9127569122276907032',
'format' = 'iceberg/parquet',
'format-version' = '2',
'write.binpack.delete-file-threshold' = '10',
'write.object-storage.enabled' = 'true',
'write.object-storage.path' = 's3://amzn-s3-demo-bucket/iceberg_database/device_activity_logs/data',
'write.parquet.compression-codec' = 'zstd')
ユースカジノ 禁止ゲームにbucket(100, user_id)
が追加されていることが確認できます。 以後、追加されるレコードから新しいユースカジノ 禁止ゲーム設定に基づき登録されます。
新しいユースカジノ 禁止ゲーム設定を使用したテーブルの再構成
前述の通り、Icebergではユースカジノ 禁止ゲーム設定を変更しても、既に登録済みのデータは変更されません。
ユースカジノ 禁止ゲームリエディタでスキャンされるデータサイズを確認します。
-- ユースカジノ 禁止ゲームリエディタ
select * from device_activity_logs
where user_id = 'user_2';
スキャンしたデータは92.73MB
となっています。

ここで再びユースカジノ 禁止ゲームに戻り、UPDATE文を使用してデータを更新します。
# ユースカジノ 禁止ゲーム
spark.sql("""
UPDATE spark_catalog.iceberg_database.device_activity_logs
SET user_id = user_id
""")
上記のUPDATE文は一見ユースカジノ 禁止ゲームと「何も変更していない」ように見えますが、実際にはIcebergの内部処理として、新しいパーティション設定に基づいたデータファイルの再編成が行われます。これにより、既存データも新しいパーティションスキーマに従って再構成されます。
データのサイズによっては少し時間がかかりますが、しばらくユースカジノ 禁止ゲームと完了します。 データ量によって、WHERE句の中でパーティションの条件を追加して、範囲を限定して再構成を図った方が良いでしょう。
また、クエリエディタでは同時に100を超えるパーティションの操作を行うことができませんが、ノートブックエディタからは実行ユースカジノ 禁止ゲームことができます。
ユースカジノ 禁止ゲームリエディタで再度スキャンされるデータサイズを確認します。
-- ユースカジノ 禁止ゲームリエディタ
select * from iceberg_database.device_activity_logs
where user_id = 'user_2';
スキャンしたデータが1.1MBに減っていることが確認できました!

ユーザー単位のレコード削除
ユーザーID単位のユースカジノ 禁止ゲームが作成できたので、あとはユーザー単位での削除も効率的に行えます。
ユースカジノ 禁止ゲームリエディタで実行します。
-- ユースカジノ 禁止ゲームリエディタ
DELETE FROM iceberg_database.device_activity_logs where user_id = 'user_2'
影響ユースカジノ 禁止ゲームパーティションが限定されるので高速に完了します。
まとめ:Athenaノートブックエディタでデータレイクの柔軟性を実現ユースカジノ 禁止ゲーム
今回はAthenaのクエリエディタだけでは対応できないIcebergテーブルのパーティション再構成を、ノートブックエディタとApache Sparkを使用して実現ユースカジノ 禁止ゲーム方法を紹介しました。
本記事のポイント
- ユースカジノ 禁止ゲーム戦略の柔軟な変更:変化ユースカジノ 禁止ゲームビジネス要件に対応できるデータレイク管理
- ユースカジノ 禁止ゲームリパフォーマンスの劇的向上:スキャンデータ量を最大98%削減
- コンプライアンス対応の容易化:ユーザー単位でのデータ削除が効率的に実行可能
ユースカジノ 禁止ゲームは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。