• Like
  • Save
"Programming Hive" Reading #1
Upcoming SlideShare
Loading in...5
×
 

"Programming Hive" Reading #1

on

  • 13,818 views

 

Statistics

Views

Total Views
13,818
Views on SlideShare
4,160
Embed Views
9,658

Actions

Likes
2
Downloads
3
Comments
0

23 Embeds 9,658

http://dayafterneet.blogspot.jp 9319
http://dayafterneet.blogspot.com 207
https://www.google.co.jp 29
http://dayafterneet.blogspot.kr 24
http://exchangite25.tawaba.com 20
http://translate.googleusercontent.com 11
http://dayafterneet.blogspot.sg 7
http://dayafterneet.blogspot.tw 6
http://dayafterneet.blogspot.de 4
http://dayafterneet.blogspot.hk 4
http://dayafterneet.blogspot.co.uk 4
http://www.google.co.jp 3
http://dayafterneet.blogspot.in 3
http://dayafterneet.blogspot.fi 3
http://dayafterneet.blogspot.ca 3
http://dayafterneet.blogspot.no 2
http://dayafterneet.blogspot.com.au 2
http://dayafterneet.blogspot.com.es 2
http://webcache.googleusercontent.com 1
http://dayafterneet.blogspot.se 1
http://www.feedspot.com 1
http://dayafterneet.blogspot.fr 1
https://www.google.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    "Programming Hive" Reading #1 "Programming Hive" Reading #1 Presentation Transcript

    • “Programming Hive” Reading #1
    • 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
    • Hive http://www.learncomputer.com/hadoop-with-hive/“Programming Hive” Reading #1 4
    • Chapter4. Data Definition •基本的な事項は割愛 •PARTITION / BUCKET のみ触れます。“Programming Hive” Reading #1 5
    • PARTITIONED BY •特定のカラムでデータのパーティショニング。 •HDFS上では指定したカラムの値ごとにディレクト リが分離される。“Programming Hive” Reading #1 6
    • Dynamic Partition •INSERT時にPARTITION対象のカラムを指定するこ とも可能 •使用するためには設定が必要 hive.exec.dynamic.partition=true“Programming Hive” Reading #1 7
    • Bucketing Table •特定のカラムをキーに、あらかじめ用意した Bucketにごとにデータを振り分ける。 (上記は、user_idをキーに96のBucketにデータを 振り分ける、の意) •使用するためには設定が必要 hive.enforce.bucketing=true mapred.reduce.tasks = [int]“Programming Hive” Reading #1 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • WHERE:RLIKE/REGEXP •正規表現を用いてあいまい検索 •LIKE •RLIKE“Programming Hive” Reading #1 16
    • JOIN •Inner JOIN •LEFT OUTER JOIN •RIGHT OUTER JOIN •FULL OUTER JOIN •LEFT SEMI-JOIN“Programming Hive” Reading #1 17
    • Map Side Join •Map処理のみを用いてJOINを行う事を強制する。 メモリ上に指定したテーブルのデータ(上記例の 場合は”b”)を読み込むため、小さめのデータで の使用を推奨。 ※上記記法は0.7以降ではdeprecated •RIGHT OUTER JOIN / FULL OUTER JOIN では使 用できない“Programming Hive” Reading #1 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
    • DISTRIBUTE BY •DISTRIBUTE BY句で指定したカラムのデータの うち、同値の場合は必ず同じReducerに振り分け られる事を保証する。“Programming Hive” Reading #1 20
    • CLUSTER BY •DISTRIBUTE BY句とSORT BY句で同じカラムを 指定するのと同じ動作になる。“Programming Hive” Reading #1 21
    • Sampling •全体のデータからサンプリングをして特定の比率 のデータを取得する。 •上記は全体データを10のBucketに分類し、その うち3つのBucketを抽出する、の意。“Programming Hive” Reading #1 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
    • UNION ALL •Hiveでは副問い合わせの時のみ使用可能。 •UNION ALLでは必ず副問い合わせ文の数分Full Scanになるので、ORやCASE...WHEN...THEN 構 文で記載できる場合はそちらの方が処理が速い。“Programming Hive” Reading #1 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
    • Chapter7. View •Viewからデータを参照する際は、DDLで定義した SELECT∼文が発行される。 •上記クエリー発行時は、 ・”SELECT * FROM people∼” でscanしつつ ・”SELECT lastname FROM shorter_join∼”の条 件でデータを抽出する“Programming Hive” Reading #1 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