Amazon AthenaでApache ユースカジノ 禁止ゲーム)
投稿日: 2024/02/08
はじめに
こんにちは、稲守です。
データレイクのテーブルフォーマットとしてApache ユースカジノ 禁止ゲームが取り上げられることが多くなってきました。AWSでもユースカジノ 禁止ゲームをサポートしているサービスとして、Amazon Athena、Amazon EMR、AWS Glueなどがあります。また、Amazon Redshiftでも読み取り専用アクセスですがプレビュー機能(2024年2月現在)として使用できるようになっています。
本稿ではApache ユースカジノ 禁止ゲームについての説明し、次回のエントリでAthenaでの使用感について紹介します。
テーブルフォーマットとは、ユースカジノ 禁止ゲームベースやユースカジノ 禁止ゲームウェアハウスなどのユースカジノ 禁止ゲーム管理システムで、ユースカジノ 禁止ゲームをテーブルとして格納するための構造や形式を指します。テーブルフォーマットはユースカジノ 禁止ゲームの配置、格納方法、メタユースカジノ 禁止ゲームの管理方法などを定義します。
一般的には、以下のような要素で構成されています。
- 列(カラム)の定義
- ユースカジノ 禁止ゲーム格納方法
- ユースカジノ 禁止ゲームの圧縮・エンコーディング
- パーティショニング
Apache ユースカジノ 禁止ゲームとは
Apache ユースカジノ 禁止ゲームは2017年にNetflix社で開発が始まり、2018年11月にオープンソース化されてApache Software Foundationのプロジェクトになりました。ユースカジノ 禁止ゲームプロジェクトのWebサイト(https://ユースカジノ 禁止ゲーム.apache.org/)から特徴を見てみます。
- ● Expressive SQL(表現力のある SQL)
- ● Full Schema Evolution(スキーマ進化)
- ● Hidden Partitioning(隠しユースカジノ 禁止ゲーム)
- ● Time Travel and Rollback(タイムトラベルとロールバック)
- ● Data Compaction(ユースカジノ 禁止ゲーム圧縮)
ただユースカジノ 禁止ゲームはあくまでテーブルフォーマットのため、これらの機能がどこまで実装されているかは、エンジン次第となっています。そのため、Amazon Athenaで対応している機能、Amazon EMRで対応している機能、そのほかApache Spark、Trinoなど使用するエンジンのドキュメントを確認しつつ使用することとなります。
ではあらためて順番に特徴を見てみましょう。
① Expressive SQL(表現力のあるSQL)
従来のデータレイクでは、挿入、削除、更新などが難しく、手動でメタデータを更新する必要がありました。またACIDトランザクションが不足していたり、パーティション管理が複雑になったりという問題点がありました。これが、ユースカジノ 禁止ゲームでは柔軟なSQLをサポートしており、MERGEやUPDATE、DELETEなどが自由に行えます。
それができるのは、なぜでしょうか。
ユースカジノ 禁止ゲームのアーキテクチャをみてみます。Apache ユースカジノ 禁止ゲームは、3 つのカテゴリのメタデータを通じてテーブルを定義しています。
- ① テーブルを定義する「メタユースカジノ 禁止ゲームファイル」
- ② テーブルのスナップショットを定義する「マニフェストリスト」
- ③ 1 つ以上のスナップショットの一部となるユースカジノ 禁止ゲームファイルのグループを定義する「マニフェストファイル」
クエリの最適化と ユースカジノ 禁止ゲーム のすべての機能は、これら 3 つのメタデータ層のデータによって実現されています。

https://ユースカジノ 禁止ゲーム.apache.org/spec/#overview
メタデータツリーを通して、ユースカジノ 禁止ゲームはスナップショットの分離とACIDサポートを提供しています。クエリが実行されると、ユースカジノ 禁止ゲーム は基本的に最新のスナップショットを使用します。任意のテーブルへの書き込みは新しいスナップショットを作成しますが、これは並行クエリには影響しません。同時書き込みは楽観的並行処理(新しいスナップショットを最初に書き込んだ者が書き込みを行い、他の書き込みは再試行される)によって処理されます。
Apache ユースカジノ 禁止ゲームでは、典型的な作成、挿入、結合の他に、行レベルの更新と削除も可能です。これらのトランザクションはすべてSQLコマンドで可能です。
② Full Schema Evolution(スキーマ進化)
テーブルのスキーマの進化をサポートしています。カラムを追加したり、削除したり、列名を変更したり、型を拡張したり、列の順序を変更したりすることができます。ユースカジノ 禁止ゲームではスキーマの更新はメタデータの変更のため、データファイルを書き換える必要はありません。
③ Hidden Partitioning(隠しユースカジノ 禁止ゲーム)
Hidden Partitioningとは、パーティションのために、特別にカラムを用意する必要がないということです。例えばevent_time(時間単位)のようなタイムスタンプ値がもともと存在していても、日付のパーティションにしたい場合は、event_date(日付単位)のようなカラムを作成してパーティションキーとする必要があったりします。この場合、正しくユーザが値を生成しないと誤ったパーティションに入ってしまいます。ユースカジノ 禁止ゲームでは、日別のパーティションを作成したい場合は、partition by (date(event_time))とすれば、タイムスタンプのカラムをもとにしていても、日付によってパーティションが生成されます。
使用できるパーティション変換関数は次のようなものです。(ユースカジノ 禁止ゲームの例)
機能 | 説明 | サポートされている型 |
---|---|---|
year(ts) | 年によるユースカジノ 禁止ゲーム | date, timestamp |
month(ts) | 月によるユースカジノ 禁止ゲーム | date, timestamp |
day(ts) | 日によるユースカジノ 禁止ゲーム | date, timestamp |
hour(ts) | 時間によるユースカジノ 禁止ゲーム | Timestamp |
bucket(N, col) | ハッシュ値 mod N のバケットによるユースカジノ 禁止ゲーム | int, long, decimal, date, timestamp, string, binary |
truncate(L, col) | L に切り捨てられた値によるユースカジノ 禁止ゲーム | int, long, decimal, string |
また、パーティション分割も、既存のテーブルで更新することができます。パーティションを変更しても以前の設定で書き込まれた古いユースカジノ 禁止ゲームは変更されません。新しいユースカジノ 禁止ゲームは新しい設定のパーティションで書き込まれます。そしてパーティションバージョンのメタユースカジノ 禁止ゲームは個別に保持されます。

https://ユースカジノ 禁止ゲーム.apache.org/docs/latest/evolution/#partition-evolution
上記の例では2008年のデータは月ごとに分割されていて、2009年以降は日別にパーティション化されています。このように両方のパーティションレイアウトを同じテーブル内に共存できます。そして、ユースカジノ 禁止ゲームでは高速化する為に特定のパーティションレイアウトに対するクエリを作成する必要はありません。Hidden Partitioningによって、クエリを実行すると、一致するデータを含まないファイルは自動的にスキャンの対象外になります。
④ Time Travel and Rollback(タイムトラベルとロールバック)
ユースカジノ 禁止ゲームではデータのバージョニングをサポートしていて、タイムトラベル機能を使うことができます。そのため、ある時点の操作が誤っていたなどの問題がわかった場合はその時点までデータを戻すことが可能です。またデータサイエンスの利用シーンでも、ある断面の学習を再現する為に、データを戻したいケースがありますね。その場合にも有用な機能です。
SELECT * FROM ユースカジノ 禁止ゲーム_table FOR TIMESTAMP AS OF TIMESTAMP ’2024-02-01 12:00 Asia/Tokyo’
とすれば、2024年2月1日12時のスナップショットを確認できます。
⑤ Data Compaction(ユースカジノ 禁止ゲーム圧縮)
ユースカジノ 禁止ゲーム テーブルにデータが蓄積するにつれて、ファイルを開くために必要な処理時間が長くなるため、クエリの効率が徐々に低下します。テーブルに delete files が含まれている場合は、追加の計算コストが発生します。ユースカジノ 禁止ゲーム では、delete files には行レベルの削除が格納され、エンジンは削除した行をクエリ結果に適用する必要があります。
ユースカジノ 禁止ゲーム テーブルでのクエリのパフォーマンスを最適化するために、圧縮によって、表の内容を変更することなく、テーブルの構造レイアウトを最適化することができます。
また、スナップショットの有効期限切れや、孤立ファイルの削除などをすることもできます。これによって、メタユースカジノ 禁止ゲームのサイズを小さくし、保持期間よりも古いファイルが削除されます。
これらのデータ圧縮について、手動で実行するだけでなく、メンテナンス処理が自動化する仕組みが用意されているエンジンもあります。ユースカジノ 禁止ゲームは手動で実行するコマンドも用意されていますが、AWS Glueデータカタログでは2023年11月に自動圧縮する機能が有効化されました。
次回について
今回は、オープンなテーブルフォーマットであるApache ユースカジノ 禁止ゲームの概要について紹介しました。概念ばかりでピンと来なかったかもしれません。次回はAmazon Athena上でユースカジノ 禁止ゲームテーブルを操作して、どんな操作感なのか試して見ましょう。それではまた。
ユースカジノ 禁止ゲームは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にユースカジノ 登録ください。