SlideShare une entreprise Scribd logo
1  sur  26
Apache Hive

インフォサイエンス株式会社 永江 哲朗
Copyright © Infoscience Corporation. All rights reserved.
Hive のことをおおまかに言うと …
ユーザーが SQL に似たクエリ言語 HiveQL でクエリを書く。
 ↓
Hive がそれを map/reduce のジョブに変換して Hadoop に実行させる。
浅く使う場合には、クエリを使うユーザーは内部構造をあまり知らなくていいとい
うところは DBMS に似ています。

Copyright © Infoscience
Corporation. All rights
Apache Hive の特徴
Apache Hive の特徴
・ Hadoop 互換のファイルシステムに格納されたデータセットの分析を行う。
・ map/reduce をサポートした SQL ライクな「 HiveQL 」という言語を用いる。
・クエリの高速化のため、ビットマップインデックスを含めたインデックス機能も
実装している

Copyright © Infoscience
Corporation. All rights
Apache Hive の機能
Apache Hive の機能
・高速化のためインデックスを作成して使用できる。
・別の種類のストレージタイプが使える。たとえばプレーンテキスト、 RCFile,
HBase など
・クエリ実行時の構文チェック時間を大幅に短縮するため、メタデータを RDBMS
に格納する機能をもつ。
・ Hadoop 環境に格納された圧縮データを扱う機能をもつ。
・日付型や文字列型を扱ったり他のデータ操作を可能とする、組み込みユーザ定義
関数( UDF) が使える。組み込み関数で用意されていない機能もユーザが自作
UDF を作成することで対応できる。
・ SQL ライクなクエリ言語 (HiveQL) 。これは内部的に Map/Reduce ジョブに変換
される。
Copyright © Infoscience
Corporation. All rights
Hive のアーキテクチャ
アーキテクチャ 

("Hadoop 第 3 版 " p.453 図 12-1 Hive のアーキテクチャ か
ら抜粋 )
すべてのコマンドやクエリはドライバに送られます。ドライバは入力されたコマ
ンドをコンパイルし、必要な演算処理の最適化を行って、 map/reduce の無閉路有
向グラフからなる実行計画を作成します。ドライバは map/reduce の job を
Hadoop に実行させます。
Copyright © Infoscience
Corporation. All rights
Hive のメタストア

・メタストア
Hive がテーブルのスキーマやその他の
システムメタデータを永続化するため
の独立したリレーショナルデータベー
スです。通常は MySQL を使用します。
※ Derby
Java アプリケーションに組み込むこと
ができる軽量 SQL データベー
ス。 Derby は、アプリケーションと同
じプロセス内で動作し、データをロー
カルのファイルに書き込みます。
 
("Hadoop 第 3 版 " p.454
 図 12-2 メタストアの設定 から抜粋 )
Copyright © Infoscience
Corporation. All rights
Hive のデータ型
プリミティブと複合型
  プリミティブ : INT, DOUBLE など
  複合型 : ARRAY, MAP, STRUCT (RDB にはありません )

("Hadoop 第 3 版 " p.459 表 12-3 Hive のデータ型 から抜粋 )
Copyright © Infoscience
Corporation. All rights
ファイルフォーマット (1)
ファイルフォーマット
TAB や空白はレコードの中でよく見られるので、区切り文字には制御文字を使う
ことが多いようです。
区切り文字

説明

n

テキストファイルでは各行がレコードになるので、改行
文字がレコードを区切ることになります。

^A
( Control-A )

フィールド(列)同士を区切る。 CREATE TABLE 文で
明示的に指定する場合は、 8 進表記で 001 と書く。

^B

ARRAY や STRUCT の要素、あるいは MAP 中のキー
/ 値ペアを区切る。 CREATE TABLE 文で明示的に指定
する場合は、 8 進表記で 002 と書く。

^C

MAP 中のキー / 値ペアのキーと対応する値を区切る。
CREATE TABLE 文で明示的に指定する場合は、 8 進表
記で 003 と書く。

「プログラミング Hive 」 p.47
表 3-3 Hive におけるデフォルトのレコード及びフィールドの区切り文字 から抜粋
Copyright © Infoscience
Corporation. All rights
ファイルフォーマット (2)
● レコードの例
以下のようなデータを例えば HDFS 上のファイルに格納します。
John Doe^A100000.0^AMary Smith^BTodd Jones^AFederal Taxes^C.2^BState
Taxes^C.05^BInsurance^C.1^A1 Michigan Ave.^BChicago^BIL^B60600
Mary Smith^A80000.0^ABill King^AFederal Taxes^C.2^BState Taxes^C.05^B<phrase
role="keep-together">Insurance</phrase>^C.1^A100 Ontario St.^BChicago^BIL^B60601
Todd Jones^A70000.0^AFederal Taxes^C.15^BState Taxes^C.03^BInsurance^C.1^A200
Chicago Ave.^BOak Park^BIL^B60700
Bill King^A60000.0^AFederal Taxes^C.15^BState Taxes^C.03^BInsurance^C.1^A300
Obscure Dr.^BObscuria^BIL^B60100

Copyright © Infoscience
Corporation. All rights
書き込み時のスキーマ適用と読み込み時のスキーマ適用

● 書き込み時のスキーマ適用: RDBMS
 読み込まれたデータがスキーマに則していなければ、そのデータのロードは拒否
されます。
● 読み込み時のスキーマ適用: Hive
 読み込み時点ではデータを確認せず、クエリの発行時に確認を行います。スキー
マに即していないデータはクエリ発行時にエラーとなります。
メリット

デメリット

書き込み時の
スキーマ適用

クエリの実行パフォーマン データベースへのデータ
スは高速になる。
のロードには時間がかか
る。

読み込み時の
スキーマ適用

初期のデータ読み込みはき クエリの実行が遅い。
わめて高速になる。

Copyright © Infoscience
Corporation. All rights
HiveQL : テーブルの作成
CREATE TABLE 文の例
CREATE TABLE records (year STRING, temperature INT, quality INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 't';
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't':
  データファイル中の各行はタブ区切りのテキストということを示しています。
※ CREATE TABLE を実行しても、 RDB のように実際に DB の中にセグメントが
作られるわけではありません。メタストアにスキーマ情報が登録されます。

Copyright © Infoscience
Corporation. All rights
Hive のパーティション
•Hive は、テーブルをパーティション群として構成します。パーティションは、テ
ーブルを、例えば日付のようなパーティション列の値に基づき、部分部分に大きく
分割する方法です。パーティションを使えば、データの断片群に対するクエリの実
行を高速化できます。
•パーティションは、テーブルの作成時に PARTITIONED BY 節で指定しま
す。 PARTITIONED BY 節は、列の定義のリストをとります。
例
CREATE TABLE logs (ts BIGINT, line STRING)
PARTITIONED BY (dt STRING, country STRING);
上記の場合、日付 ( 文字列 ) と国名でパーティションが
作られます ( 例 . 右図参照 ) 。

Copyright © Infoscience
Corporation. All rights

("Hadoop 第 3 版 " p.464 より抜粋 )
HiveQL : テーブルの確認
テーブルの確認
hive> SHOW TABLES;
ユーザーが見られるテーブルをすべて表示します。
hive> SHOW TABLES '.*s';
's' で終わるテーブルをすべて表示します。 ( 正規表現 )
hive> DESCRIBE invites;
列を表示します。
例

hive> describe invites;
OK
foo
int
bar
string
ds
string
# Partition Information
# col_name
data_type

None
None
None
comment

ds
string
None
Time taken: 0.265 seconds, Fetched: 8 row(s)

Copyright © Infoscience
Corporation. All rights
HiveQL : データのロード
データのロードの例
LOAD DATA LOCAL INPATH 'input/ncdc/micro-tab/sample.txt'
OVERWRITE INTO TABLE records;
このコマンドを実行すると、 Hive は指定されたローカルファイルを Hive の保
管用ディレクトリに保存します。例えば HDFS 上の Hive 保管用ディレクトリ上に
ファイルとして保存します。
※ OVERWRITE キーワードは、ディレクトリ中にそのテーブル用のファイルがす
でにあった場合、 Hive に対して、それらを削除するように指示します。

Copyright © Infoscience
Corporation. All rights
HiveQL: INSERT
データをインポートするには INSERT 文を使います。 (Hive には今のところ
UPDATE, DELETE はありません )
INSERT の例
hive> INSERT OVERWRITE TABLE events
> SELECT a.* FROM profiles a WHERE a.key < 100;
profiles というテーブルからその key という列の値が 100 未満の行を抽出し、それ
を events というテーブルに INSERT しています。
※ 上記の例では OVERWRITE キーワードが指定されているため、既存のデータ
は新たに指定されたデータに置き換わります。

Copyright © Infoscience
Corporation. All rights
HiveQL : SELECT
クエリの例
SELECT weekday, COUNT(*)
FROM u_data_new
GROUP BY weekday;
このように、 SQL に似た構文が使用できます。

Copyright © Infoscience
Corporation. All rights
HiveQL のクエリの制限 (1)
•SELECT に関して
FROM には単一のテーブル もしくは ビュー しか書けません。

•( 内部 ) 結合に関して
Hive では、結合の述部に複数の式を AND キーワードで区切って並べ、複数の列を
使って結合させることができます。クエリに JOIN...ON... 節を追加すれば、 3 つ以
上のテーブルを結合することもできます。
例
SELECT sales.*, things.*
FROM sales JOIN things ON (sales.id = things.id);

Copyright © Infoscience
Corporation. All rights
HiveQL のクエリの制限 (2)
•サブクエリ
FROM 節中にしか書けません。
例
SELECT station, year, AVG(max_temperature)
FROM (
SELECT station, year, MAX(temperature) AS max_temperature
FROM records2
WHERE temperature != 9999
AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9)
GROUP BY station, year
) mt
GROUP BY station, year;

Copyright © Infoscience
Corporation. All rights
HiveQL : 関数
HiveQL で使用できる関数
・数値関数 :
round, floor, ceil, rand, exp, ln, pow, sqrt, … 等
・集計関数:
count, sum, avg, min, max, variance, … 等
・テーブル生成関数 :
json_tuple ( 複数の名前をとってタプルを返す ), parse_url_tuple 等
・その他の組み込み関数
length, reverse, concat, substr, upper, lower, … 等

Copyright © Infoscience
Corporation. All rights
HiveQL : ビュー
•ビュー
読み出しのみ。マテリアライズド・ビューはサポートされていません。
その ビューを参照する文が実行された時点で、ビューの SELECT 文が実行され
ます。
例
CREATE VIEW max_temperatures (station, year, max_temperature) AS
SELECT station, year, MAX(temperature)
FROM valid_records
GROUP BY station, year;

Copyright © Infoscience
Corporation. All rights
HiveQL : インデックス
現時点では、インデックスには compact と bitmap の 2 種類があります。
• compact インデックス
それぞれの値に対し、各ファイル内のオフセット(基準点からの距離)ではなく、
HDFS のブロック番号を保存します。そのため、 compact インデックスはそれ
ほどディスク容量を消費しませんが、それでも値が近傍の行にまとまっているよう
な場合には効果的です。
例.
CREATE TABLE t(i int, j int);
CREATE INDEX x ON TABLE t(j)
AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler';

•bitmap インデックス
特定の値が現れている行を、圧縮されたビット集合を使って効率的に保存するもの
で、通常はカーディナリティの低い列(性別や国など)に対して使うのが適切です
。
Copyright © Infoscience
Corporation. All rights
HiveQL : ユーザー定義関数
•ユーザー定義関数を書けば、独自の処理のコードを Hive に組み込み、 Hive のクエ
リ中から簡単に呼び出すことができます。
•ユーザー定義関数 (User-Defined Function:UDF)
UDF は、 1 つの行を受け取り、 1 つの出力行を生成します。数値関数や文字列関数
など。
•ユーザー定義集計関数 (User-Defined Function:UDAF)
UDAF は、複数の入力行を受け取り、 1 つの出力行を生成します。 COUNT や MAX
といった関数など。
•ユーザー定義テーブル生成関数 (User-Defined Table-generating Function:UDTF)
UDTF は、 1 つの行に対して処理を行い、複数の行 ( すなわちテーブル ) を出力しま
す。
Copyright © Infoscience
Corporation. All rights
Hive の事例
・ KIXEYE
オンラインゲームのログの分析に Hive を使用している。
https://cwiki.apache.org/confluence/download/attachments/27362054/Hive-kixeyeanalytics.pdf?version=1&modificationDate=1360856744000&api=v2
・ NASA ジェット推進研究所
地域気象モデル評価システムで使用。
( 「プログラミング Hive 」 p.317 ~ 321)

Copyright © Infoscience
Corporation. All rights
Impala, Presto
Hive にはジョブの実行に時間がかかるという弱点があります。
Hive の有効性を受け、その問題を解決した Impara や Presto という OSS が開発さ
れています。
・ Impala
Hive よりも高速。
map/reduce を使用しない。
耐障害性がない。
Cloudera により開発される。
・ Presto
アドホックなクエリの結果をインタラクティブに得ることに最適化。
map/reduce とは異なるアーキテクチャ。
Facebook により開発される。

Copyright © Infoscience
Corporation. All rights
まとめ
・ Hadoop 互換のファイルシステムに格納されたデータセットの分析を行う。
・ map/reduce をサポートした SQL ライクな「 HiveQL 」という言語を用いる。
・ Hadoop を使ったクエリで mapreduce のプログラミングが不要になるの
で、 MapReduce に詳しくない人でも Hadoop を使って分析することが可能になる
。
→ いままでのような、ユーザーが RDBMS を使って分析を行うということの延長
線上にある。
・ Hive では一般のユーザーでも Hadoop のスケーラブルなところを活かせる。
cf. RDBMS の性能はスケーラブルになりにくい。シャーディングにすることも可
能だが運用が面倒になる。 NoSQL はスケーラブルだが ( クエリは ) 一般のユーザ
ーには難しい。

Copyright © Infoscience
Corporation. All rights
参考文献
・”オライリーセミナー Hive 入門 " 嶋内 翔 著
(http://www.slideshare.net/Cloudera_jp/hive-20130724)
・ "Hadoop 第 3 版 " (12 章 ), オライリー・ジャパン、 Tom White 著、 Sky 株式会社 玉川
竜司、兼田 聖司 訳
・ " プログラミング Hive", オライリー・ジャパン、 Edward Capriolo, Dean Wampler,
Jason Rutherglen 著、 Sky 株式会社 玉川 竜司 訳
・ Apache Hive, wikipedia (http://ja.wikipedia.org/wiki/Apache_Hive,
http://en.wikipedia.org/wiki/Apache_Hive)
・ Apache Hive Wiki: GettingStarted
https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStartedInstallingHivefromaStableRelease
・ Hadoop クイックスタートガイド
http://metasearch.sourceforge.jp/wiki/index.php?Hadoop%A5%AF
%A5%A4%A5%C3%A5%AF%A5%B9%A5%BF%A1%BC%A5%C8%A5%AC
%A5%A4%A5%C9

Copyright © Infoscience
Corporation. All rights

Contenu connexe

Tendances

最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返りSotaro Kimura
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたRecruit Technologies
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Cloudera Japan
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) hamaken
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Nagato Kasaki
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Japan
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中Satoshi Noto
 
シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法Yohei Azekatsu
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
 
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -Yoshiyasu SAEKI
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 

Tendances (20)

最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り最近のストリーム処理事情振り返り
最近のストリーム処理事情振り返り
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみた
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介AWS Database Migration Service ご紹介
AWS Database Migration Service ご紹介
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法シンプルでシステマチックな Linux 性能分析方法
シンプルでシステマチックな Linux 性能分析方法
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
Apache Sparkにおけるメモリ - アプリケーションを落とさないメモリ設計手法 -
 
Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)
 
PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題PostgreSQL: XID周回問題に潜む別の問題
PostgreSQL: XID周回問題に潜む別の問題
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 

Similaire à Apache Hive 紹介

オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724Cloudera Japan
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...Insight Technology, Inc.
 
2012 02-02 mixi engineer's seminor #3
2012 02-02  mixi engineer's seminor #32012 02-02  mixi engineer's seminor #3
2012 02-02 mixi engineer's seminor #3Yu Ishikawa
 
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
 
Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)Takaichi Ito
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京Koichiro Sasaki
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]Hideo Takagi
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAmazon Web Services Japan
 
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいIBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいK Kimura
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-SORACOM, INC
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介Sotaro Kimura
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTeruo Kawasaki
 
hs_spider_hs_something_20110906
hs_spider_hs_something_20110906hs_spider_hs_something_20110906
hs_spider_hs_something_20110906Kentoku
 
Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介bigt23
 

Similaire à Apache Hive 紹介 (20)

オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724
 
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
 
2012 02-02 mixi engineer's seminor #3
2012 02-02  mixi engineer's seminor #32012 02-02  mixi engineer's seminor #3
2012 02-02 mixi engineer's seminor #3
 
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
 
Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)Rawlerフレームワーク(全体)
Rawlerフレームワーク(全体)
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
Orchestrate DBaaS入門
Orchestrate DBaaS入門Orchestrate DBaaS入門
Orchestrate DBaaS入門
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
 
Fluentd casual
Fluentd casualFluentd casual
Fluentd casual
 
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいIBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
SQL Server 入門
SQL Server 入門SQL Server 入門
SQL Server 入門
 
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
AWS Elastic MapReduce詳細 -ほぼ週刊AWSマイスターシリーズ第10回-
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 
hs_spider_hs_something_20110906
hs_spider_hs_something_20110906hs_spider_hs_something_20110906
hs_spider_hs_something_20110906
 
Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介
 

Plus de あしたのオープンソース研究所   (14)

Datomic&datalog紹介
Datomic&datalog紹介Datomic&datalog紹介
Datomic&datalog紹介
 
Red5
Red5Red5
Red5
 
Friendica_28th_AshitanoKen
Friendica_28th_AshitanoKenFriendica_28th_AshitanoKen
Friendica_28th_AshitanoKen
 
Apache UIMA
Apache UIMAApache UIMA
Apache UIMA
 
Flume
FlumeFlume
Flume
 
Gephi Quick Start (Japanese)
Gephi Quick Start (Japanese)Gephi Quick Start (Japanese)
Gephi Quick Start (Japanese)
 
Gephi Tutorial Visualization (Japanese)
Gephi Tutorial Visualization (Japanese)Gephi Tutorial Visualization (Japanese)
Gephi Tutorial Visualization (Japanese)
 
Cassandra v0.6-siryou
Cassandra v0.6-siryouCassandra v0.6-siryou
Cassandra v0.6-siryou
 
MongoDB
MongoDBMongoDB
MongoDB
 
Rails.20110405
Rails.20110405Rails.20110405
Rails.20110405
 
S4
S4S4
S4
 
machine learning & apache mahout
machine learning & apache mahoutmachine learning & apache mahout
machine learning & apache mahout
 
20100831.あしたの研第14回座談会moses.スライド
20100831.あしたの研第14回座談会moses.スライド20100831.あしたの研第14回座談会moses.スライド
20100831.あしたの研第14回座談会moses.スライド
 
Cassandra 分散データベース
Cassandra 分散データベースCassandra 分散データベース
Cassandra 分散データベース
 

Dernier

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Dernier (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Apache Hive 紹介

  • 1. Apache Hive インフォサイエンス株式会社 永江 哲朗 Copyright © Infoscience Corporation. All rights reserved.
  • 2. Hive のことをおおまかに言うと … ユーザーが SQL に似たクエリ言語 HiveQL でクエリを書く。  ↓ Hive がそれを map/reduce のジョブに変換して Hadoop に実行させる。 浅く使う場合には、クエリを使うユーザーは内部構造をあまり知らなくていいとい うところは DBMS に似ています。 Copyright © Infoscience Corporation. All rights
  • 3. Apache Hive の特徴 Apache Hive の特徴 ・ Hadoop 互換のファイルシステムに格納されたデータセットの分析を行う。 ・ map/reduce をサポートした SQL ライクな「 HiveQL 」という言語を用いる。 ・クエリの高速化のため、ビットマップインデックスを含めたインデックス機能も 実装している Copyright © Infoscience Corporation. All rights
  • 4. Apache Hive の機能 Apache Hive の機能 ・高速化のためインデックスを作成して使用できる。 ・別の種類のストレージタイプが使える。たとえばプレーンテキスト、 RCFile, HBase など ・クエリ実行時の構文チェック時間を大幅に短縮するため、メタデータを RDBMS に格納する機能をもつ。 ・ Hadoop 環境に格納された圧縮データを扱う機能をもつ。 ・日付型や文字列型を扱ったり他のデータ操作を可能とする、組み込みユーザ定義 関数( UDF) が使える。組み込み関数で用意されていない機能もユーザが自作 UDF を作成することで対応できる。 ・ SQL ライクなクエリ言語 (HiveQL) 。これは内部的に Map/Reduce ジョブに変換 される。 Copyright © Infoscience Corporation. All rights
  • 5. Hive のアーキテクチャ アーキテクチャ  ("Hadoop 第 3 版 " p.453 図 12-1 Hive のアーキテクチャ か ら抜粋 ) すべてのコマンドやクエリはドライバに送られます。ドライバは入力されたコマ ンドをコンパイルし、必要な演算処理の最適化を行って、 map/reduce の無閉路有 向グラフからなる実行計画を作成します。ドライバは map/reduce の job を Hadoop に実行させます。 Copyright © Infoscience Corporation. All rights
  • 6. Hive のメタストア ・メタストア Hive がテーブルのスキーマやその他の システムメタデータを永続化するため の独立したリレーショナルデータベー スです。通常は MySQL を使用します。 ※ Derby Java アプリケーションに組み込むこと ができる軽量 SQL データベー ス。 Derby は、アプリケーションと同 じプロセス内で動作し、データをロー カルのファイルに書き込みます。   ("Hadoop 第 3 版 " p.454  図 12-2 メタストアの設定 から抜粋 ) Copyright © Infoscience Corporation. All rights
  • 7. Hive のデータ型 プリミティブと複合型   プリミティブ : INT, DOUBLE など   複合型 : ARRAY, MAP, STRUCT (RDB にはありません ) ("Hadoop 第 3 版 " p.459 表 12-3 Hive のデータ型 から抜粋 ) Copyright © Infoscience Corporation. All rights
  • 8. ファイルフォーマット (1) ファイルフォーマット TAB や空白はレコードの中でよく見られるので、区切り文字には制御文字を使う ことが多いようです。 区切り文字 説明 n テキストファイルでは各行がレコードになるので、改行 文字がレコードを区切ることになります。 ^A ( Control-A ) フィールド(列)同士を区切る。 CREATE TABLE 文で 明示的に指定する場合は、 8 進表記で 001 と書く。 ^B ARRAY や STRUCT の要素、あるいは MAP 中のキー / 値ペアを区切る。 CREATE TABLE 文で明示的に指定 する場合は、 8 進表記で 002 と書く。 ^C MAP 中のキー / 値ペアのキーと対応する値を区切る。 CREATE TABLE 文で明示的に指定する場合は、 8 進表 記で 003 と書く。 「プログラミング Hive 」 p.47 表 3-3 Hive におけるデフォルトのレコード及びフィールドの区切り文字 から抜粋 Copyright © Infoscience Corporation. All rights
  • 9. ファイルフォーマット (2) ● レコードの例 以下のようなデータを例えば HDFS 上のファイルに格納します。 John Doe^A100000.0^AMary Smith^BTodd Jones^AFederal Taxes^C.2^BState Taxes^C.05^BInsurance^C.1^A1 Michigan Ave.^BChicago^BIL^B60600 Mary Smith^A80000.0^ABill King^AFederal Taxes^C.2^BState Taxes^C.05^B<phrase role="keep-together">Insurance</phrase>^C.1^A100 Ontario St.^BChicago^BIL^B60601 Todd Jones^A70000.0^AFederal Taxes^C.15^BState Taxes^C.03^BInsurance^C.1^A200 Chicago Ave.^BOak Park^BIL^B60700 Bill King^A60000.0^AFederal Taxes^C.15^BState Taxes^C.03^BInsurance^C.1^A300 Obscure Dr.^BObscuria^BIL^B60100 Copyright © Infoscience Corporation. All rights
  • 10. 書き込み時のスキーマ適用と読み込み時のスキーマ適用 ● 書き込み時のスキーマ適用: RDBMS  読み込まれたデータがスキーマに則していなければ、そのデータのロードは拒否 されます。 ● 読み込み時のスキーマ適用: Hive  読み込み時点ではデータを確認せず、クエリの発行時に確認を行います。スキー マに即していないデータはクエリ発行時にエラーとなります。 メリット デメリット 書き込み時の スキーマ適用 クエリの実行パフォーマン データベースへのデータ スは高速になる。 のロードには時間がかか る。 読み込み時の スキーマ適用 初期のデータ読み込みはき クエリの実行が遅い。 わめて高速になる。 Copyright © Infoscience Corporation. All rights
  • 11. HiveQL : テーブルの作成 CREATE TABLE 文の例 CREATE TABLE records (year STRING, temperature INT, quality INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'; ROW FORMAT DELIMITED FIELDS TERMINATED BY 't':   データファイル中の各行はタブ区切りのテキストということを示しています。 ※ CREATE TABLE を実行しても、 RDB のように実際に DB の中にセグメントが 作られるわけではありません。メタストアにスキーマ情報が登録されます。 Copyright © Infoscience Corporation. All rights
  • 12. Hive のパーティション •Hive は、テーブルをパーティション群として構成します。パーティションは、テ ーブルを、例えば日付のようなパーティション列の値に基づき、部分部分に大きく 分割する方法です。パーティションを使えば、データの断片群に対するクエリの実 行を高速化できます。 •パーティションは、テーブルの作成時に PARTITIONED BY 節で指定しま す。 PARTITIONED BY 節は、列の定義のリストをとります。 例 CREATE TABLE logs (ts BIGINT, line STRING) PARTITIONED BY (dt STRING, country STRING); 上記の場合、日付 ( 文字列 ) と国名でパーティションが 作られます ( 例 . 右図参照 ) 。 Copyright © Infoscience Corporation. All rights ("Hadoop 第 3 版 " p.464 より抜粋 )
  • 13. HiveQL : テーブルの確認 テーブルの確認 hive> SHOW TABLES; ユーザーが見られるテーブルをすべて表示します。 hive> SHOW TABLES '.*s'; 's' で終わるテーブルをすべて表示します。 ( 正規表現 ) hive> DESCRIBE invites; 列を表示します。 例 hive> describe invites; OK foo int bar string ds string # Partition Information # col_name data_type None None None comment ds string None Time taken: 0.265 seconds, Fetched: 8 row(s) Copyright © Infoscience Corporation. All rights
  • 14. HiveQL : データのロード データのロードの例 LOAD DATA LOCAL INPATH 'input/ncdc/micro-tab/sample.txt' OVERWRITE INTO TABLE records; このコマンドを実行すると、 Hive は指定されたローカルファイルを Hive の保 管用ディレクトリに保存します。例えば HDFS 上の Hive 保管用ディレクトリ上に ファイルとして保存します。 ※ OVERWRITE キーワードは、ディレクトリ中にそのテーブル用のファイルがす でにあった場合、 Hive に対して、それらを削除するように指示します。 Copyright © Infoscience Corporation. All rights
  • 15. HiveQL: INSERT データをインポートするには INSERT 文を使います。 (Hive には今のところ UPDATE, DELETE はありません ) INSERT の例 hive> INSERT OVERWRITE TABLE events > SELECT a.* FROM profiles a WHERE a.key < 100; profiles というテーブルからその key という列の値が 100 未満の行を抽出し、それ を events というテーブルに INSERT しています。 ※ 上記の例では OVERWRITE キーワードが指定されているため、既存のデータ は新たに指定されたデータに置き換わります。 Copyright © Infoscience Corporation. All rights
  • 16. HiveQL : SELECT クエリの例 SELECT weekday, COUNT(*) FROM u_data_new GROUP BY weekday; このように、 SQL に似た構文が使用できます。 Copyright © Infoscience Corporation. All rights
  • 17. HiveQL のクエリの制限 (1) •SELECT に関して FROM には単一のテーブル もしくは ビュー しか書けません。 •( 内部 ) 結合に関して Hive では、結合の述部に複数の式を AND キーワードで区切って並べ、複数の列を 使って結合させることができます。クエリに JOIN...ON... 節を追加すれば、 3 つ以 上のテーブルを結合することもできます。 例 SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id); Copyright © Infoscience Corporation. All rights
  • 18. HiveQL のクエリの制限 (2) •サブクエリ FROM 節中にしか書けません。 例 SELECT station, year, AVG(max_temperature) FROM ( SELECT station, year, MAX(temperature) AS max_temperature FROM records2 WHERE temperature != 9999 AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9) GROUP BY station, year ) mt GROUP BY station, year; Copyright © Infoscience Corporation. All rights
  • 19. HiveQL : 関数 HiveQL で使用できる関数 ・数値関数 : round, floor, ceil, rand, exp, ln, pow, sqrt, … 等 ・集計関数: count, sum, avg, min, max, variance, … 等 ・テーブル生成関数 : json_tuple ( 複数の名前をとってタプルを返す ), parse_url_tuple 等 ・その他の組み込み関数 length, reverse, concat, substr, upper, lower, … 等 Copyright © Infoscience Corporation. All rights
  • 20. HiveQL : ビュー •ビュー 読み出しのみ。マテリアライズド・ビューはサポートされていません。 その ビューを参照する文が実行された時点で、ビューの SELECT 文が実行され ます。 例 CREATE VIEW max_temperatures (station, year, max_temperature) AS SELECT station, year, MAX(temperature) FROM valid_records GROUP BY station, year; Copyright © Infoscience Corporation. All rights
  • 21. HiveQL : インデックス 現時点では、インデックスには compact と bitmap の 2 種類があります。 • compact インデックス それぞれの値に対し、各ファイル内のオフセット(基準点からの距離)ではなく、 HDFS のブロック番号を保存します。そのため、 compact インデックスはそれ ほどディスク容量を消費しませんが、それでも値が近傍の行にまとまっているよう な場合には効果的です。 例. CREATE TABLE t(i int, j int); CREATE INDEX x ON TABLE t(j) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'; •bitmap インデックス 特定の値が現れている行を、圧縮されたビット集合を使って効率的に保存するもの で、通常はカーディナリティの低い列(性別や国など)に対して使うのが適切です 。 Copyright © Infoscience Corporation. All rights
  • 22. HiveQL : ユーザー定義関数 •ユーザー定義関数を書けば、独自の処理のコードを Hive に組み込み、 Hive のクエ リ中から簡単に呼び出すことができます。 •ユーザー定義関数 (User-Defined Function:UDF) UDF は、 1 つの行を受け取り、 1 つの出力行を生成します。数値関数や文字列関数 など。 •ユーザー定義集計関数 (User-Defined Function:UDAF) UDAF は、複数の入力行を受け取り、 1 つの出力行を生成します。 COUNT や MAX といった関数など。 •ユーザー定義テーブル生成関数 (User-Defined Table-generating Function:UDTF) UDTF は、 1 つの行に対して処理を行い、複数の行 ( すなわちテーブル ) を出力しま す。 Copyright © Infoscience Corporation. All rights
  • 23. Hive の事例 ・ KIXEYE オンラインゲームのログの分析に Hive を使用している。 https://cwiki.apache.org/confluence/download/attachments/27362054/Hive-kixeyeanalytics.pdf?version=1&modificationDate=1360856744000&api=v2 ・ NASA ジェット推進研究所 地域気象モデル評価システムで使用。 ( 「プログラミング Hive 」 p.317 ~ 321) Copyright © Infoscience Corporation. All rights
  • 24. Impala, Presto Hive にはジョブの実行に時間がかかるという弱点があります。 Hive の有効性を受け、その問題を解決した Impara や Presto という OSS が開発さ れています。 ・ Impala Hive よりも高速。 map/reduce を使用しない。 耐障害性がない。 Cloudera により開発される。 ・ Presto アドホックなクエリの結果をインタラクティブに得ることに最適化。 map/reduce とは異なるアーキテクチャ。 Facebook により開発される。 Copyright © Infoscience Corporation. All rights
  • 25. まとめ ・ Hadoop 互換のファイルシステムに格納されたデータセットの分析を行う。 ・ map/reduce をサポートした SQL ライクな「 HiveQL 」という言語を用いる。 ・ Hadoop を使ったクエリで mapreduce のプログラミングが不要になるの で、 MapReduce に詳しくない人でも Hadoop を使って分析することが可能になる 。 → いままでのような、ユーザーが RDBMS を使って分析を行うということの延長 線上にある。 ・ Hive では一般のユーザーでも Hadoop のスケーラブルなところを活かせる。 cf. RDBMS の性能はスケーラブルになりにくい。シャーディングにすることも可 能だが運用が面倒になる。 NoSQL はスケーラブルだが ( クエリは ) 一般のユーザ ーには難しい。 Copyright © Infoscience Corporation. All rights
  • 26. 参考文献 ・”オライリーセミナー Hive 入門 " 嶋内 翔 著 (http://www.slideshare.net/Cloudera_jp/hive-20130724) ・ "Hadoop 第 3 版 " (12 章 ), オライリー・ジャパン、 Tom White 著、 Sky 株式会社 玉川 竜司、兼田 聖司 訳 ・ " プログラミング Hive", オライリー・ジャパン、 Edward Capriolo, Dean Wampler, Jason Rutherglen 著、 Sky 株式会社 玉川 竜司 訳 ・ Apache Hive, wikipedia (http://ja.wikipedia.org/wiki/Apache_Hive, http://en.wikipedia.org/wiki/Apache_Hive) ・ Apache Hive Wiki: GettingStarted https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStartedInstallingHivefromaStableRelease ・ Hadoop クイックスタートガイド http://metasearch.sourceforge.jp/wiki/index.php?Hadoop%A5%AF %A5%A4%A5%C3%A5%AF%A5%B9%A5%BF%A1%BC%A5%C8%A5%AC %A5%A4%A5%C9 Copyright © Infoscience Corporation. All rights