Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

"Programming Hive" Reading #1

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Programming Hive Reading #3
Programming Hive Reading #3
Chargement dans…3
×

Consultez-les par la suite

1 sur 27 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à "Programming Hive" Reading #1 (20)

Publicité

Plus par moai kids (20)

Plus récents (20)

Publicité

"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

×