Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Redshift内のデータの活用をAthenaにオフロードしてみた / akiba-aws-o...
Search
Nayuta S.
November 24, 2021
Technology
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Redshift内のデータの活用をAthenaにオフロードしてみた / akiba-aws-online7
Nayuta S.
November 24, 2021
More Decks by Nayuta S.
See All by Nayuta S.
今年注目する!データ分析プラットフォームでのAIの活用
nayuts
0
200
AIを活用したStreamlitアプリ開発のTipsと、ほかのAI機能との棲み分け
nayuts
0
790
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
2.1k
Snowflakeで実践する、生成AIを活用した「自然言語によるデータとの対話」
nayuts
0
620
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
1
1.8k
FastMCPでSQLをチェックしてくれるMCPサーバーを自作してCursorから動かしてみた
nayuts
1
850
Amazon Athenaから利用時のGlueのIcebergテーブルのメンテナンスについて
nayuts
0
830
目玉アップデート!のSageMaker LakehouseとUnified Studioは何たるかを見てみよう!
nayuts
0
1.5k
Amazon Rekognitionのカスタムモデルで独自のモデレーションモデルをトレーニングする
nayuts
0
480
Other Decks in Technology
See All in Technology
プロダクト開発組織の現在地(Ver.2026/07) / product-organization
kaonavi
0
380
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
520
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
600
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
270
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
2
1k
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
4
420
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
200
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
730
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
1
460
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
500
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
610
キャリアLT会#3
beli68
2
230
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
We Are The Robots
honzajavorek
0
280
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.7k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
AI: The stuff that nobody shows you
jnunemaker
PRO
9
840
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Transcript
Redshift内のデータの活⽤を Athenaにオフロードしてみた 2021/11/12(⾦) AKIBA.AWS Online #7 データアナリティクス事業部 鈴⽊ 那由太 1
2 ⾃⼰紹介 鈴⽊ 那由太 - nayuts クラスメソッド 株式会社 データアナリティクス事業本部 ⼊社:
2021/05 好きなサービス:Athena、Kinesis、Glue
3 本⽇お話しすること
4 本⽇お話しすること LTの技術的な要点 • RedshiftからS3へのアンロード時にCLEANPATHオプションが便利 • アンロード後にAthenaからデータを検索する際、パーティション射影が便利 想定視聴者 • Redshiftのデータに対して分析処理を⾏いたい。
• Athenaへのオフロードを考えている。
5 LTのテーマ Redshiftのデータを Athenaで処理したい
6 はじめの構成 BIツールなど Amazon Redshift RedshiftにBIツールなどがアクセスするような構成から…
7 ⽬標の構成 BIツールなど Amazon Athena AWS Glue Data Catalog Amazon
S3 Amazon Redshift アンロード 検索 S3にアンロードしたデータにAthenaを通してアクセスするような構成にしたい。
8 ⽬標の構成 BIツールなど Amazon Athena AWS Glue Data Catalog Amazon
S3 Amazon Redshift アンロード 検索 <ϝϦοτ> "UIFOBͷϑΣσϨʔςουɾ ΫΤϦͰ༷ʑͳαʔϏεʹԣஅ తʹݕࡧͰ͖ΔͳͲ S3にアンロードしたデータにAthenaを通してアクセスするような構成にしたい。
9 ⽬標の構成 ① ② BIツールなど Amazon Athena AWS Glue Data
Catalog Amazon S3 Amazon Redshift アンロード 検索 <ϝϦοτ> "UIFOBͷϑΣσϨʔςουɾ ΫΤϦͰ༷ʑͳαʔϏεʹԣஅ తʹݕࡧͰ͖ΔͳͲ S3にアンロードしたデータにAthenaを通してアクセスするような構成にしたい。
10 Redshift内のデータ ※各カラムの説明 year:年(2021または2022) month:年⽉( 112021から012022 ) type:AまたはBまたはC ほかは省略… 以下のようなデータをRedshiftにロードしておく。
11 “⽬標の構成"のしくみ
12 ①アンロード Amazon Redshift cm-nayuts-unload/month_example ├── month=012022 │ └── 0000_part_00.parquet
├── month=112021 │ └── 0000_part_00.parquet └── month=122021 └── 0000_part_00.parquet Amazon S3 <UNLOADコマンド例> UNLOADコマンドにより、SQLでRedshiftのデータをS3にエクスポートできる。
13 ②検索 ※パーティション分割するケース例> • 積み上げられるデータ(トランザクションデータなど) • パーティションを作成する AthenaからS3のデータに対してSQLでクエリを実⾏できる。スキャン量で課⾦。 データを 1.
パーティション分割し、2. 列指向データフォーマットにして、コストを改善できる。 cm-nayuts-unload ├── month=012022 │ └── 0000_part_00.parquet ├── month=112021 │ └── 0000_part_00.parquet └── month=122021 └── 0000_part_00.parquet SELECT col1 , col2 FROM table1 WHERE month = xxxx AWS Glue Data Catalog など Amazon S3 Amazon Athena <1について>
14 基本的な考え⽅のポイント Amazon Athena AWS Glue Data Catalog Amazon S3
Amazon Redshift UNLOADで実現する。 オプションにより、 パーティション分割済 み・列指向な形式でエ クスポートできる。 パーティションごとに検 索してコスト削減できる。
15 基本的な考え⽅のポイント Amazon Athena AWS Glue Data Catalog Amazon S3
Amazon Redshift UNLOADで実現する。 オプションにより、 パーティション分割済 み・列志向な形式でエ クスポートできる。 パーティションごとに検 索してコスト削減できる。 再アンロードしたく なったときに、そのま ま再実⾏してしまって いいの? どうやって追加する の? 無料で⾃動でやってく れるの?
16 アンロードのポイント
17 CLEANPATHオプション Amazon Redshift cm-nayuts-unload ├── month=012022 │ ├──0000_part_00.parquet (旧)
│ └──0000_part_01.parquet (旧) └── month=022022 └── 0000_part_00.parquet Amazon S3 cm-nayuts-unload ├── month=012022 │ └── 0000_part_00.parquet (新) └── month=022022 └── 0000_part_00.parquet Amazon S3 2022/1のパーティションに アンロード 〜イメージ〜 TO句で指定したS3パスにある既存のファイルを削除してから、指定した場所にファイルをアンロードできる。 PARTITION BY句と組み合わせると、指定したパーティションのみファイルが削除される。 WHERE句を変えるだけで、容易に差分変更ができる。 ⽐較)ALLOWOVERWRITE
18 CLEANPATHオプションのメリット ▪2回⽬のアンロード処理 ▪ 2回⽬の結果 ▪1回⽬のアンロード処理 ▪ 1回⽬の結果 アンロード対象のパーティションに関しては、Redshift内のデータと⼀致する。
19 検索のポイント
20 検索するパーティションの決め⽅ ① Athena側で計算する • パーティション射影 ② Glueデータカタログに登録・参照する • SQLから追加する
• ADD PARTITION • MSCK REPAIR TABLE • Glueクローラーを実⾏する など… Athenaから検索対象のパーティションを決めるには、以下のような⽅法がある。 AWS Glue Data Catalog ① ② 検索
21 パーティション射影 <メリット> • 検索前にGlueデータカタログに問い合わせしないので⾼速化が期待できる。 • Glueデータカタログにパーティションメタデータを追加する必要がない。 <注意点> • AWS
Glue Data Catalog または Hive メタストア内のテーブルに登録された既存のパーティションメタデータ は無視される。 テーブルにパーティションキーのルールやフォーマットを設定することで、Athenaで パーティション値を計算できる。
22 パーティション射影の型 型 概要 ⽇付型 ⽇付の範囲とフォーマットを定義し、値を⽇付として解釈する。 整数型 整数の範囲を定義し、値を整数として解釈する。 列挙型 列挙のメンバーを定義し、値を解釈する。
挿⼊型 クエリの WHERE 句で単⼀の値を指定する。 パーティション射影の型には各々の特徴がある。
23 パーティション射影~⽇付型~ <テーブル定義> <検索結果> ⽇付の範囲とフォーマットを定義し、値を⽇付として解釈する。
24 パーティション射影 ~列挙型~ <テーブル定義> <検索結果> ※データは事前にtypeをパーティションキーにしてUNLOADする 列挙のメンバーを定義し、値を解釈する。
25 パーティション射影 ~挿⼊型~ <テーブル定義> <検索結果> ※データは事前にtypeをパーティションキーにしてUNLOADする クエリの WHERE 句で単⼀の値を指定する。
26 列挙型と挿⼊型の違い 挿⼊型はWHERE句で指定される値が単⼀である必要がある。 列挙型は単⼀である必要はないが、メンバーが増えるとDDLを修正する必要がある。 パーティション射影の型の特徴を考慮して設計する。
27 まとめ
28 まとめ • Redshiftでのアンロード時にCLEANPATHオプションを指定すると アンロード先のパーティションのデータが、Redshift のデータと整 合する。 • Athenaでアンロードされたデータを検索する際はパーティション射 影を使うとメタデータを管理する必要がなくなる。
• パーティション射影の型には各々の特徴があり、設計時に考慮する 必要がある。
29