SlideShare a Scribd company logo
1 of 27
Download to read offline
“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

More Related Content

What's hot

Perlと出会い、Perlを作る
Perlと出会い、Perlを作るPerlと出会い、Perlを作る
Perlと出会い、Perlを作るgoccy
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbNaotoshi Seo
 
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionHadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionCloudera, Inc.
 
なぜApache HBaseを選ぶのか? #cwt2013
なぜApache HBaseを選ぶのか? #cwt2013なぜApache HBaseを選ぶのか? #cwt2013
なぜApache HBaseを選ぶのか? #cwt2013Cloudera Japan
 
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13wスケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13wCloudera Japan
 
GHC 6.12.1 マルチコア対応ランタイムシステムについて
GHC 6.12.1 マルチコア対応ランタイムシステムについてGHC 6.12.1 マルチコア対応ランタイムシステムについて
GHC 6.12.1 マルチコア対応ランタイムシステムについてMitsutoshi Aoe
 
Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03oranie Narut
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Kouhei Sutou
 
Log analysis with Hadoop in livedoor 2013
Log analysis with Hadoop in livedoor 2013Log analysis with Hadoop in livedoor 2013
Log analysis with Hadoop in livedoor 2013SATOSHI TAGOMORI
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたYohei Azekatsu
 
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 Mika Kane
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門Insight Technology, Inc.
 

What's hot (20)

Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Perlと出会い、Perlを作る
Perlと出会い、Perlを作るPerlと出会い、Perlを作る
Perlと出会い、Perlを作る
 
Java11へのマイグレーションガイド ~Apache Hadoopの事例~
Java11へのマイグレーションガイド ~Apache Hadoopの事例~Java11へのマイグレーションガイド ~Apache Hadoopの事例~
Java11へのマイグレーションガイド ~Apache Hadoopの事例~
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdb
 
Hadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese VersionHadoop Troubleshooting 101 - Japanese Version
Hadoop Troubleshooting 101 - Japanese Version
 
なぜApache HBaseを選ぶのか? #cwt2013
なぜApache HBaseを選ぶのか? #cwt2013なぜApache HBaseを選ぶのか? #cwt2013
なぜApache HBaseを選ぶのか? #cwt2013
 
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13wスケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
 
GHC 6.12.1 マルチコア対応ランタイムシステムについて
GHC 6.12.1 マルチコア対応ランタイムシステムについてGHC 6.12.1 マルチコア対応ランタイムシステムについて
GHC 6.12.1 マルチコア対応ランタイムシステムについて
 
Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版
 
20120423 hbase勉強会
20120423 hbase勉強会20120423 hbase勉強会
20120423 hbase勉強会
 
Slub alloc and free
Slub alloc and freeSlub alloc and free
Slub alloc and free
 
Log analysis with Hadoop in livedoor 2013
Log analysis with Hadoop in livedoor 2013Log analysis with Hadoop in livedoor 2013
Log analysis with Hadoop in livedoor 2013
 
Hadoop, NoSQL, GlusterFSの概要
Hadoop, NoSQL, GlusterFSの概要Hadoop, NoSQL, GlusterFSの概要
Hadoop, NoSQL, GlusterFSの概要
 
CloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみたCloudTrail ログの検索を爆速化してみた
CloudTrail ログの検索を爆速化してみた
 
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014 FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
FuelPHP - フレームワーク4本勝負 @PHPカンファレンス関西2014
 
SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門SQL Server エンジニアのためのコンテナ入門
SQL Server エンジニアのためのコンテナ入門
 

Similar to "Programming Hive" Reading #1

HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りYukinori Suda
 
Drawing Dataflow On Dalvik Bytecodes
Drawing Dataflow On Dalvik Bytecodes Drawing Dataflow On Dalvik Bytecodes
Drawing Dataflow On Dalvik Bytecodes Takahiro Yoshimura
 
HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
HBase×Impalaで作るアドテク「GMOプライベートDMP」@HBaseMeetupTokyo2015SummerHBase×Impalaで作るアドテク「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015SummerMichio Katano
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
Hiveハンズオン
HiveハンズオンHiveハンズオン
HiveハンズオンSatoshi Noto
 
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoTsuyoshi Yamamoto
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16Yifeng Jiang
 
株式会社インタースペース 守安様 登壇資料
株式会社インタースペース 守安様 登壇資料株式会社インタースペース 守安様 登壇資料
株式会社インタースペース 守安様 登壇資料leverages_event
 
オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724Cloudera Japan
 
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common LispIntegral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lispfukamachi
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方Ryo Tomidokoro
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTeruo Kawasaki
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for SmalltalkSho Yoshida
 

Similar to "Programming Hive" Reading #1 (20)

HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
 
Drawing Dataflow On Dalvik Bytecodes
Drawing Dataflow On Dalvik Bytecodes Drawing Dataflow On Dalvik Bytecodes
Drawing Dataflow On Dalvik Bytecodes
 
HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
HBase×Impalaで作るアドテク「GMOプライベートDMP」@HBaseMeetupTokyo2015SummerHBase×Impalaで作るアドテク「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Hadoop事始め
Hadoop事始めHadoop事始め
Hadoop事始め
 
Hiveハンズオン
HiveハンズオンHiveハンズオン
Hiveハンズオン
 
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
 
株式会社インタースペース 守安様 登壇資料
株式会社インタースペース 守安様 登壇資料株式会社インタースペース 守安様 登壇資料
株式会社インタースペース 守安様 登壇資料
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
 
オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724
 
Integral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common LispIntegral - New O/R Mapper for Common Lisp
Integral - New O/R Mapper for Common Lisp
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 
AWS SDK for Smalltalk
AWS SDK for SmalltalkAWS SDK for Smalltalk
AWS SDK for Smalltalk
 
PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
 

More from moai kids

中国最新ニュースアプリ事情
中国最新ニュースアプリ事情中国最新ニュースアプリ事情
中国最新ニュースアプリ事情moai kids
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4moai kids
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDBmoai kids
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBmoai kids
 
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたHadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたmoai kids
 
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)HBase本輪読会資料(11章)
HBase本輪読会資料(11章)moai kids
 
snappyについて
snappyについてsnappyについて
snappyについてmoai kids
 
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)第四回月次セミナー(公開版)
第四回月次セミナー(公開版)moai kids
 
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)第三回月次セミナー(公開版)
第三回月次セミナー(公開版)moai kids
 
Pythonで自然言語処理
Pythonで自然言語処理Pythonで自然言語処理
Pythonで自然言語処理moai kids
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークmoai kids
 
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)Yammer試用レポート(公開版)
Yammer試用レポート(公開版)moai kids
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)moai kids
 
中国と私(仮題)
中国と私(仮題)中国と私(仮題)
中国と私(仮題)moai kids
 
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料moai kids
 
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてn-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてmoai kids
 
Analysis of ‘lang-8’
Analysis of ‘lang-8’Analysis of ‘lang-8’
Analysis of ‘lang-8’moai kids
 
Androidの音声認識とテキスト読み上げ機能について
Androidの音声認識とテキスト読み上げ機能についてAndroidの音声認識とテキスト読み上げ機能について
Androidの音声認識とテキスト読み上げ機能についてmoai kids
 
Amebaサーチ使用傾向
Amebaサーチ使用傾向Amebaサーチ使用傾向
Amebaサーチ使用傾向moai kids
 

More from moai kids (20)

中国最新ニュースアプリ事情
中国最新ニュースアプリ事情中国最新ニュースアプリ事情
中国最新ニュースアプリ事情
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたHadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきました
 
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)HBase本輪読会資料(11章)
HBase本輪読会資料(11章)
 
snappyについて
snappyについてsnappyについて
snappyについて
 
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)第四回月次セミナー(公開版)
第四回月次セミナー(公開版)
 
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)第三回月次セミナー(公開版)
第三回月次セミナー(公開版)
 
Pythonで自然言語処理
Pythonで自然言語処理Pythonで自然言語処理
Pythonで自然言語処理
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
 
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)Yammer試用レポート(公開版)
Yammer試用レポート(公開版)
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
 
中国と私(仮題)
中国と私(仮題)中国と私(仮題)
中国と私(仮題)
 
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料
 
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてn-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法について
 
Analysis of ‘lang-8’
Analysis of ‘lang-8’Analysis of ‘lang-8’
Analysis of ‘lang-8’
 
Androidの音声認識とテキスト読み上げ機能について
Androidの音声認識とテキスト読み上げ機能についてAndroidの音声認識とテキスト読み上げ機能について
Androidの音声認識とテキスト読み上げ機能について
 
Amebaサーチ使用傾向
Amebaサーチ使用傾向Amebaサーチ使用傾向
Amebaサーチ使用傾向
 

Recently uploaded

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (9)

20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

"Programming Hive" Reading #1

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