Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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.
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
210
今年注目する!データ分析プラットフォームでのAIの活用
nayuts
0
220
AIを活用したStreamlitアプリ開発のTipsと、ほかのAI機能との棲み分け
nayuts
0
1k
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
2.2k
Snowflakeで実践する、生成AIを活用した「自然言語によるデータとの対話」
nayuts
0
740
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
1
2k
FastMCPでSQLをチェックしてくれるMCPサーバーを自作してCursorから動かしてみた
nayuts
1
930
Amazon Athenaから利用時のGlueのIcebergテーブルのメンテナンスについて
nayuts
0
900
目玉アップデート!のSageMaker LakehouseとUnified Studioは何たるかを見てみよう!
nayuts
0
1.6k
Other Decks in Technology
See All in Technology
[2026 Oracle Technical Deep Dive] オンプレミスDBのCloud移行アプローチ:移行計画に基づくメソッドとツールの選択 (2026年9月17日開催)
oracle4engineer
PRO
0
110
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
240
KanaAI
shreyas1009
0
140
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
490
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
2.9k
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
250
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
250
[2026 Oracle Technical Deep Dive] AI時代のアプリケーションを支えるCloud NativeとJava EEモダナイゼーション (2026年9月17日開催)
oracle4engineer
PRO
0
100
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
630
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
330
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
570
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
590
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
Believing is Seeing
oripsolob
1
240
Building Applications with DynamoDB
mza
96
7.2k
ラッコキーワード サービス紹介資料
rakko
1
5.1M
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
270
Leo the Paperboy
mayatellez
10
2.3k
Docker and Python
trallard
47
4.2k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
So, you think you're a good person
axbom
PRO
2
2.2k
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