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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
210
AIを活用したStreamlitアプリ開発のTipsと、ほかのAI機能との棲み分け
nayuts
0
920
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
2.1k
Snowflakeで実践する、生成AIを活用した「自然言語によるデータとの対話」
nayuts
0
680
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
1
1.9k
FastMCPでSQLをチェックしてくれるMCPサーバーを自作してCursorから動かしてみた
nayuts
1
900
Amazon Athenaから利用時のGlueのIcebergテーブルのメンテナンスについて
nayuts
0
870
目玉アップデート!のSageMaker LakehouseとUnified Studioは何たるかを見てみよう!
nayuts
0
1.6k
Amazon Rekognitionのカスタムモデルで独自のモデレーションモデルをトレーニングする
nayuts
0
510
Other Decks in Technology
See All in Technology
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
100
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.1k
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
180
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.3k
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
110
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
250
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
0
360
IDperturb: Enhancing Variation in Synthetic Face Generation via Angular Perturbation
sansantech
PRO
0
140
はじめてのDatabricks:技術者向けワークショップ / beginner-workshop
databricksjapan
PRO
0
150
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
1
2.2k
データエンジニアの困りごとをDevinと一緒に解消する
10xinc
2
800
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
230
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
680
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
430
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Claude Code のすすめ
schroneko
67
230k
Rails Girls Zürich Keynote
gr2m
96
14k
Unsuck your backbone
ammeep
672
58k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
240
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