Your SlideShare is downloading. ×
0
“Programming Hive”    Reading #1
Today’s Agenda         •Chapter4. Data Difinition                 •PARTITION / BUCKET         •Chapter6. Queries           ...
Hive                                http://www.learncomputer.com/hadoop-with-hive/“Programming Hive” Reading #1           ...
Chapter4. Data Definition         •基本的な事項は割愛         •PARTITION / BUCKET のみ触れます。“Programming Hive” Reading #1          5
PARTITIONED BY         •特定のカラムでデータのパーティショニング。         •HDFS上では指定したカラムの値ごとにディレクト           リが分離される。“Programming Hive” Readi...
Dynamic Partition         •INSERT時にPARTITION対象のカラムを指定するこ           とも可能         •使用するためには設定が必要           hive.exec.dynamic...
Bucketing Table         •特定のカラムをキーに、あらかじめ用意した           Bucketにごとにデータを振り分ける。           (上記は、user_idをキーに96のBucketにデータを     ...
Chapter6. Queries                     操作                   HiveQL                SQL                     検索               ...
Chapter6. Queries                 カテゴリ                   HiveQL             備考                    整数型                   TI...
SELECT:Functions                                               Name                      round(double a)                  ...
SELECT:Table Generating Functions                 Function                                     備考                         ...
json_tuple memo            •json_tuple()                 • http://javasourcecode.org/html/open-source/hive/hive-0.9.0/org/...
SELECT:When Hive Can Avoid M/R            •以下の条件に合致する場合はMapReduceが起動              しない(HDFSへのシーケンシャルアクセス)                 •...
WHERE:Predicate Operations                                        Name                      A=B                      A <=>...
WHERE:RLIKE/REGEXP            •正規表現を用いてあいまい検索                 •LIKE                 •RLIKE“Programming Hive” Reading #1   16
JOIN            •Inner JOIN            •LEFT OUTER JOIN            •RIGHT OUTER JOIN            •FULL OUTER JOIN          ...
Map Side Join            •Map処理のみを用いてJOINを行う事を強制する。              メモリ上に指定したテーブルのデータ(上記例の              場合は”b”)を読み込むため、小さめのデー...
Map Side Join         •hive.auto.convert.join=[true|false]            •JOIN最適化を有効にする。JOINの際片方のテー              ブルサイズが小さい場合は...
DISTRIBUTE BY            •DISTRIBUTE BY句で指定したカラムのデータの              うち、同値の場合は必ず同じReducerに振り分け              られる事を保証する。“Progr...
CLUSTER BY            •DISTRIBUTE BY句とSORT BY句で同じカラムを              指定するのと同じ動作になる。“Programming Hive” Reading #1            ...
Sampling            •全体のデータからサンプリングをして特定の比率              のデータを取得する。            •上記は全体データを10のBucketに分類し、その              うち3...
Block Sampling            •TABLESAMPLE(0.1 PERCENT)                 •全データから0.1%のデータを抽出する。            •TABLESAMPLE(100M)   ...
UNION ALL            •Hiveでは副問い合わせの時のみ使用可能。            •UNION ALLでは必ず副問い合わせ文の数分Full              Scanになるので、ORやCASE...WHEN....
UNION ALL SELECT log.ymd, log.level, log.message                                  SELECT ymd, level, message FROM log WHER...
Chapter7. View            •Viewからデータを参照する際は、DDLで定義した              SELECT∼文が発行される。            •上記クエリー発行時は、              ・”S...
Chapter7. View                        STAGE DEPENDENCIES:                         Stage-1 is a root stage                 ...
"Programming Hive" Reading #1
Upcoming SlideShare
Loading in...5
×

"Programming Hive" Reading #1

15,306

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
15,306
On Slideshare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of ""Programming Hive" Reading #1"

  1. 1. “Programming Hive” Reading #1
  2. 2. Today’s Agenda •Chapter4. Data Difinition •PARTITION / BUCKET •Chapter6. Queries •SELECT / WHERE / JOIN / DISTRIBUTE BY / CLUSTER BY / UNION ALL •Chapter7. Views •View“Programming Hive” Reading #1 3
  3. 3. Hive http://www.learncomputer.com/hadoop-with-hive/“Programming Hive” Reading #1 4
  4. 4. Chapter4. Data Definition •基本的な事項は割愛 •PARTITION / BUCKET のみ触れます。“Programming Hive” Reading #1 5
  5. 5. PARTITIONED BY •特定のカラムでデータのパーティショニング。 •HDFS上では指定したカラムの値ごとにディレクト リが分離される。“Programming Hive” Reading #1 6
  6. 6. Dynamic Partition •INSERT時にPARTITION対象のカラムを指定するこ とも可能 •使用するためには設定が必要 hive.exec.dynamic.partition=true“Programming Hive” Reading #1 7
  7. 7. Bucketing Table •特定のカラムをキーに、あらかじめ用意した Bucketにごとにデータを振り分ける。 (上記は、user_idをキーに96のBucketにデータを 振り分ける、の意) •使用するためには設定が必要 hive.enforce.bucketing=true mapred.reduce.tasks = [int]“Programming Hive” Reading #1 8
  8. 8. Chapter6. Queries 操作 HiveQL SQL 検索 SELECT SELECT 更新 - UPDATE INSERT OVERWRITE TABLE 挿入 INSERT INTO TABLE INSERT INTO 削除 - DELETE FROM ※『はじめてのHadoop』P245より引用加筆“Programming Hive” Reading #1 9
  9. 9. Chapter6. Queries カテゴリ HiveQL 備考 整数型 TINYINT 1バイト SMALLINT 2バイト INT 4バイト BIGINT 8バイト 浮動小数点型 FLOAT 4バイト DOUBLE 8バイト 文字列型 STRING 真偽値 BOOLEAN TRUE/FALSE 配列型 ARRAY hoge[0] MAP型 MAP hoge[‘fuga’] 構造体型 STRUCT hoge.fuga ※『はじめてのHadoop』P245より引用加筆“Programming Hive” Reading #1 10
  10. 10. SELECT:Functions Name round(double a) round(double a, int d) floor(double a) ceil(double a), ceiling(double a) rand(), rand(int seed) exp(double a) ln(double a) log10(double a) log2(double a) ・・・ ※詳細はHiveのWikiを参照ください。 https://cwiki.apache.org/Hive/languagemanual-udf.html“Programming Hive” Reading #1 11
  11. 11. SELECT:Table Generating Functions Function 備考 SELECT explode(myCol) AS myNewCol FROM myTable; #myCol : [1,2,3][4,5,6] explode() #myNewCol : 1 2 3 4 5 6 select a.timestamp, b.* json_tuple() from log a lateral view json_tuple(a.appevent, eventid, eventname) b as f1, f2; SELECT parse_url_tuple(url, ‘HOST’,‘PATH’.‘QUERY’) as (host, parse_url_tuple() path, query) FROM url_table“Programming Hive” Reading #1 12
  12. 12. json_tuple memo •json_tuple() • http://javasourcecode.org/html/open-source/hive/hive-0.9.0/org/ apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple.java.html •JSONObject •Hive-JSON-Serde • https://github.com/rcongiu/Hive-JSON-Serde/blob/master/src/main/ java/org/openx/data/jsonserde/JsonSerDe.java •org.openx.data.jsonserde.JsonSerDe (独自実装)“Programming Hive” Reading #1 13
  13. 13. SELECT:When Hive Can Avoid M/R •以下の条件に合致する場合はMapReduceが起動 しない(HDFSへのシーケンシャルアクセス) •From句ならびにWhere句が指定されてない時 •SELECT * FROM employees; •From句が未指定で、Where句にパーティション 用のカラムが指定されている時 •SELECT * FROM employees WHERE country = ‘USA’ and state = ‘CA’;“Programming Hive” Reading #1 14
  14. 14. WHERE:Predicate Operations Name A=B A <=> B A <> B A<B A <= B A>B A >= B A [NOT] BETWEEN B AND C A IS NULL A IS NOT NULL A LIKE B A RLIKE B A REGEXP B“Programming Hive” Reading #1 15
  15. 15. WHERE:RLIKE/REGEXP •正規表現を用いてあいまい検索 •LIKE •RLIKE“Programming Hive” Reading #1 16
  16. 16. JOIN •Inner JOIN •LEFT OUTER JOIN •RIGHT OUTER JOIN •FULL OUTER JOIN •LEFT SEMI-JOIN“Programming Hive” Reading #1 17
  17. 17. Map Side Join •Map処理のみを用いてJOINを行う事を強制する。 メモリ上に指定したテーブルのデータ(上記例の 場合は”b”)を読み込むため、小さめのデータで の使用を推奨。 ※上記記法は0.7以降ではdeprecated •RIGHT OUTER JOIN / FULL OUTER JOIN では使 用できない“Programming Hive” Reading #1 18
  18. 18. Map Side Join •hive.auto.convert.join=[true|false] •JOIN最適化を有効にする。JOINの際片方のテー ブルサイズが小さい場合はMap Side Join。 •hive.mapjoin.smalltable.filesize=[int] •指定したサイズよりデータが小さい場合、一般的 なM/R処理でなくMap Side Joinが行われる。 ※参考: http://d.hatena.ne.jp/wyukawa/20120328/1332950392 http://d.hatena.ne.jp/wyukawa/20110818/1313670105“Programming Hive” Reading #1 19
  19. 19. DISTRIBUTE BY •DISTRIBUTE BY句で指定したカラムのデータの うち、同値の場合は必ず同じReducerに振り分け られる事を保証する。“Programming Hive” Reading #1 20
  20. 20. CLUSTER BY •DISTRIBUTE BY句とSORT BY句で同じカラムを 指定するのと同じ動作になる。“Programming Hive” Reading #1 21
  21. 21. Sampling •全体のデータからサンプリングをして特定の比率 のデータを取得する。 •上記は全体データを10のBucketに分類し、その うち3つのBucketを抽出する、の意。“Programming Hive” Reading #1 22
  22. 22. Block Sampling •TABLESAMPLE(0.1 PERCENT) •全データから0.1%のデータを抽出する。 •TABLESAMPLE(100M) •全データから100MB分のデータを抽出 •TABLESAMPLE(100 ROWS) •全データから100行のデータを抽出 https://cwiki.apache.org/Hive/languagemanual-sampling.html“Programming Hive” Reading #1 23
  23. 23. UNION ALL •Hiveでは副問い合わせの時のみ使用可能。 •UNION ALLでは必ず副問い合わせ文の数分Full Scanになるので、ORやCASE...WHEN...THEN 構 文で記載できる場合はそちらの方が処理が速い。“Programming Hive” Reading #1 24
  24. 24. UNION ALL SELECT log.ymd, log.level, log.message SELECT ymd, level, message FROM log WHERE type = ‘A’ OR type = ‘B’ FROM ( SORT BY log.ymd ASC; SELECT l1.ymd, l1.level, l1.message FROM log l1 WHERE l1.type = A UNION ALL SELECT l2.ymd, l2.level, l2.message FROM log l2 WHERE l2.type = B ) log SORT BY log.ymd ASC; STAGE PLANS: STAGE PLANS: Stage: Stage-1 Stage: Stage-1 Map Reduce Map Reduce Alias -> Map Operator Tree: Alias -> Map Operator Tree: null-subquery1:log-subquery1:m1 TableScan TableScan (中略) (中略) Select Operator null-subquery2:log-subquery2:m2 (後略) TableScan (中略) Union Select Operator (後略)“Programming Hive” Reading #1 25
  25. 25. Chapter7. View •Viewからデータを参照する際は、DDLで定義した SELECT∼文が発行される。 •上記クエリー発行時は、 ・”SELECT * FROM people∼” でscanしつつ ・”SELECT lastname FROM shorter_join∼”の条 件でデータを抽出する“Programming Hive” Reading #1 26
  26. 26. Chapter7. View STAGE DEPENDENCIES: Stage-1 is a root stage Stage-0 is a root stage STAGE PLANS: Stage: Stage-1 Map Reduce Alias -> Map Operator Tree: hoge_view:hoge_source TableScan alias: hoge_source Filter Operator (中略) Select Operator (中略) Select Operator (中略) Limit File Output Operator compressed: false GlobalTableId: 0 table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat Stage: Stage-0 Fetch Operator limit: 10“Programming Hive” Reading #1 27
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×