ユースカジノ チャット活用の答えは、CTC。」ユースカジノ 最低出金額 <,AWSセッションレポート<,[SVS404-R1]Athenaノートブックエディタを使用して、Icebergテーブルのパーティションを再構成ユースカジノ 禁止ゲーム

Athenaユースカジノ 禁止ゲーム使用して、
Icebergテーブルのパーティションを再構成ユースカジノ 禁止ゲーム

はじめに: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)
""")

Note:ここで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に減っていることが確認できました!

パフォーマンス改善:ユースカジノ 禁止ゲーム再構成前の92.73MBから1.1MBへと、スキャンデータ量を約98%削減に成功しました。これはユースカジノ 禁止ゲームリのコスト削減と応答時間の短縮に直結します。

ユーザー単位のレコード削除

ユーザーID単位のユースカジノ 禁止ゲームが作成できたので、あとはユーザー単位での削除も効率的に行えます。

ユースカジノ 禁止ゲームリエディタで実行します。

-- ユースカジノ 禁止ゲームリエディタ
DELETE FROM iceberg_database.device_activity_logs where user_id = 'user_2'

影響ユースカジノ 禁止ゲームパーティションが限定されるので高速に完了します。

まとめ:Athenaノートブックエディタでデータレイクの柔軟性を実現ユースカジノ 禁止ゲーム

今回はAthenaのクエリエディタだけでは対応できないIcebergテーブルのパーティション再構成を、ノートブックエディタとApache Sparkを使用して実現ユースカジノ 禁止ゲーム方法を紹介しました。

本記事のポイント

  • ユースカジノ 禁止ゲーム戦略の柔軟な変更:変化ユースカジノ 禁止ゲームビジネス要件に対応できるデータレイク管理
  • ユースカジノ 禁止ゲームリパフォーマンスの劇的向上:スキャンデータ量を最大98%削減
  • コンプライアンス対応の容易化:ユーザー単位でのデータ削除が効率的に実行可能

ユースカジノ 禁止ゲームは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にお問い合わせください。

ユースカジノ 登録

【著者プロフィール】

稲守 啓樹(いなもり ひろき)

伊藤忠テクノソリューションズ株式会社 クラウドアーキテクト

流通業向けのアプリ開発および運用を約15年担当。現在AWSを活用したお客様のデータ活用基盤の構築および維持保守担当として活動中。

ユースカジノ チャット活用の答えは、CTC。」ユースカジノ 最低出金額 <,AWSセッションレポート<,[SVS404-R1]Athenaノートブックエディタを使用して、Icebergテーブルのパーティションを再構成ユースカジノ 禁止ゲーム

pagetop