DEA / ドメイン3 データ運用とサポート

データサンプリングとデータスキュー

概要

データサンプリングは、データ全体の代わりに一部 (標本) を取り出して調べる手法です。品質の確認や探索を速く安く行えます。は、データの値や量が一部に偏っている状態で、分散処理では一部のノードだけに負荷が集中して全体が遅くなります。DEA では、サンプリングの手法を説明できることと、スキューに対処する仕組みを実装できることが問われます。


主要技術

① サンプリングの手法

ランダムサンプリングは、全体から無作為に選びます。偏りが少なく基本の手法です。層化サンプリングは、地域や商品カテゴリなどのグループ (層) ごとに決まった割合で選び、件数の少ない層も確実に含めます。系統サンプリングは、N 件ごとに1件を選ぶ手法で簡単ですが、データに周期があると偏ります。先頭の N 件だけを取る方法は手軽ですが、並び順に偏りがあると全体を代表しません。 では sample() (ランダム) と sampleBy() (層化)、 では TABLESAMPLE BERNOULLI (行単位) と TABLESAMPLE SYSTEM (データの塊単位)、 ではプロジェクトのサンプルの種類 (先頭 / ランダム) で使い分けます。

② スキューの見つけ方

UI でほかより極端に長いタスクや大きいパーティションを探すほか、 のジョブのオブザーバビリティ (glue.driver.skewness.stage、glue.driver.skewness.job) で偏りを数値で確かめます。 ではの偏り (SVV_TABLE_INFO の skew_rows)、 ではホット、 ではホットパーティションとして現れます。

③ スキューへの対処

は、偏ったキーに乱数の接尾辞を付けて複数のパーティションへ分散させ、集計後に元のキーでまとめ直す方法です。 の AQE (Adaptive Query Execution) の結合の最適化を有効にすると、大きすぎるパーティションを自動で分割します。片方のテーブルが小さければで自体を避けます。偏ったキーが「未登録」を表す 0 や NULL のような値で、内部結合の相手に存在しないなら、結合の前にその行を除けば結果を変えずに偏りもシャッフルの量もなくせます。スキューの対処の前に、偏った値がデータ品質の問題でないかを確かめます。 では偏りの少ない列をにし (または AUTO / EVEN)、 と では値がばらつくを選びます。


試験対策

① 選択基準

「件数の少ないグループも必ず含めて品質を確かめたい」は層化サンプリング、「全体の傾向を偏りなく推定したい」はランダムサンプリングです。「一部のタスクだけが長く走る」「特定のキーにデータが集中する」はで、、AQE、、の見直しで対処します。

② 混同しやすい点

ワーカーやノードを増やしてもは解消しません。偏ったパーティションは1つのタスクが処理し続けるため、データの分け方を変える必要があります。


参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください