Weitere ähnliche Inhalte
Ähnlich wie オライリーセミナー Hive入門 #oreilly0724 (20)
Mehr von Cloudera Japan (20)
オライリーセミナー Hive入門 #oreilly0724
- 2. 自己紹介
• 嶋内 翔(しまうち しょう)
• 2011年4月にClouderaの最初の日本人社員として入
社
• テクニカルサポート業務をメインに、日本における技
術に関係する業務全般を担当
2
- 3. Apache
Hadoop
Hadoopは、
1. 単一サーバで処理しきれないほど大量なデータを
2. コモディティサーバを並べることによって
3. 分散処理及び保存するための
4. オープンソースソフトウェアです
3
- 4. Hadoopシステムの全体構成
4
Hadoop
外部システム
RDBMS
Webサーバ等の
ログを生成するサーバ
携帯端末の
通信ログ
APIアクセス
ログ収集
テーブルごと
インポート
分散バッチ処理
機械学習
外部システム
APIアクセス
ユーザ
DWH
テーブルごと
エクスポート
BIツール
+
JDBC/ODBC
検索
SQL
- 5. Hadoopのシステム全体構成
5
Hadoop
外部システム
RDBMS
Webサーバ等の
ログを生成するサーバ
携帯端末の
通信ログ
APIアクセス
ログ収集
テーブルごと
インポート
分散バッチ処理
機械学習
外部システム
APIアクセス
ユーザ
DWH
テーブルごと
エクスポート
BIツール
+
JDBC/ODBC
検索
SQL
データの取り込み
データの活用
分析
探索
提供
データの処理
データの
保存
- 6. Hadoopシステムの全体構成
6
Hadoop
外部システム
RDBMS
Webサーバ等の
ログを生成するサーバ
携帯端末の
通信ログ
APIアクセス
ログ収集
テーブルごと
インポート
分散バッチ処理
機械学習
外部システム
APIアクセス
ユーザ
DWH
テーブルごと
エクスポート
BIツール
+
JDBC/ODBC
検索
SQL
- 7. Apache
Hive
(Hive本1章)
• Hadoop上でMapReduceを実行してくれるSQL方言
HiveQLを提供する
• データウェアハウスアプリケーションに最も適してい
る
• データが更新されない
• 高速なレスポンスが要求されない
7
- 9. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>
)
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
9
- 10. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>
)
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
10
外部テーブル
データのパス
- 11. 外部テーブル
(Hive本4.3.2)
• ファイルシステム上にあるデータをそのままテーブルとして扱
える
• 他のツールとデータを共有することも簡単にできる
11
CSV
/user/sho/super_cool_web_service/access_log
Hive
テーブルA
MapReduce
Pig
CSV
CSV
- 12. 外部テーブル
(Hive本4.3.2)
• テーブルを削除しても、データは消えない
12
CSV
Hive
テーブルA
MapReduce
Pig
CSV
CSV
/user/sho/super_cool_web_service/access_log
影響なし!
- 13. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>
)
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
13
コレクションデータ型
- 14. コレクションデータ型(Hive本3.2)
単なる
STRING
や
INT
だけでなく、より複雑な型もカラ
ムとして定義可能
14
型
定義例
参照例
STRUCT
user
STRUCT<id:INT,
name:STRING>
user.id
user.name
それぞれINT、STRINGの値を取り出す
MAP
user
MAP<STRING,
STRING>
user[‘id’]
user[‘name’]
中身はどちらもSTRING
ARRAY
user
ARRAY<STRING>
user[0]
user[1]
Hive本の例では添字が抜けているので注意
UNIONTYPE
user
UNIONTYPE<INT,
STRING>
user
(そのまま)
列挙した型のいずれを格納することも可能
(Hive本には訳注のみ)
- 15. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>
)
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
15
パーティション
- 18. Hiveのスキーマ作成クエリの例
CREATE
EXTERNAL
TABLE
tweets
(
id
BIGINT,
created_at
STRING,
favorited
BOOLEAN,
retweet_count
INT,
retweeted_status
STRUCT<
text:STRING,
user:STRUCT<screen_name:STRING,name:STRING>>
)
PARTITIONED
BY
(datehour
INT)
ROW
FORMAT
SERDE
'com.cloudera.hive.serde.JSONSerDe'
LOCATION
'/user/flume/tweets'
18
SerDe
- 19. SerDe
(Hive本15.4)
• Serializer
/
Deserializer
の略。「さーでぃー」と読む
• あらゆるデータをHiveレコードに変換するためのイン
タフェースを提供する
• 組み込みSerDeもいくつかある
• RegexSerDeなど
• テキスト以外のバイナリデータなども、カスタム
SerDeを実装することで読み込むことは可能
• ただしJavaのクラスを実装する必要がある
19
- 20. RegexSerDeを使った
Apacheログの読み込みの例(Hive
wikiより)
20
CREATE
TABLE
apachelog
(
host
STRING,
idenkty
STRING,
user
STRING,
kme
STRING,
request
STRING,
status
STRING,
size
STRING,
referer
STRING,
agent
STRING)
ROW
FORMAT
SERDE
'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH
SERDEPROPERTIES
(
"input.regex"
=
"([^]*)
([^]*)
([^]*)
(-‐|[^]*])
([^
"]*|"[^"]*
")
(-‐|[0-‐9]*)
(-‐|[0-‐9]*)(?:
([^
"]*|".*")
([^
"]*|".*"))?",
"output.format.string"
=
"%1$s
%2$s
%3$s
%4$s
%5$s
%6$s
%7$s
%8$s
%9$s"
)
STORED
AS
TEXTFILE;
- 22. Cloudera
Impala(Hive本付録B)
• オープンソースの低レイテンシSQLエンジン
• HiveQLベース
• Hive
の文法はほぼそのまま使えます
• スキーマオンリードの概念はそのまま生かせます
• C++
• MapReduceは使わない
• HDFS
や HBase
上のデータを処理可能
• 非常に高速
• 大体
x10〜30
• 遅い時でも
x2〜3
- 23. Cloudera
Impala(Hive本付録B)
• オープンソースの低レイテンシSQLエンジン
• HiveQLベース
• Hive
の文法はほぼそのまま使えます
• C++
• MapReduceは使わない
• HDFS
や HBase
上のデータを処理可能
• 非常に高速
• 大体
x10〜30
• 遅い時でも
x2〜3
• 私が見たことある最速は x97