SlideShare a Scribd company logo
®
© 2015 MapR Technologies 1
®
© 2015 MapR Technologies
Drilling Into Data With Apache Drill
Ted Dunning – Chef Application Architect, MapR Technologies
2015 年年 11 ⽉月  12 ⽇日
®
© 2015 MapR Technologies 2
{“about” : “me”}
®
© 2015 MapR Technologies 3
アジェンダ
•  Why Drill?
•  オープンデータの探索索の例例
•  どのように動作するのか?
®
© 2015 MapR Technologies 4
1980 2000 20101990 2020
固定スキーマ
DB管理理者が構造を管理理
動的/柔軟なスキーマ
アプリケーションが構造を管理理
⾮非リレーショナルデータベースリレーショナルデータベース
GB〜~TB TB〜~PBデータサイズ
データベース
データは⾮非リレーショナルデータストアに向かう
データ構造
開発スタイル
構造化 構造化、半構造化、⾮非構造化
計画的(リリースサイクル=数ヶ⽉月〜~数年年) 反復復的(リリースサイクル=数⽇日〜~数週間)
®
© 2015 MapR Technologies 5
⾮非リレーショナルデータストアにSQLを持ち込む
SQL の親しみやすさ NoSQL の機敏さ
•  ANSI SQL セマンティクス
•  低レイテンシ
•  ツール/アプリケーションと
の連携
•  スキーマ管理理なし
–  HDFS (Parquet、JSON など)
–  HBase
–  …
•  データ変換・複製なし
–  データのサイロ化を防ぐ
•  使いやすさ
®
© 2015 MapR Technologies 6
即時分析により「即断可能な」ビジネスを実現
Hadoop

データ
データ
モデリング
変換
データ移動
(任意)
ユーザー
Hadoop

データ
ユーザー
管理理された
アプローチ
探索索的な
アプローチ
新しいビジネスの問いかけソースデータの変更更
結果を得るまでの合計時間: 数週間から数ヶ⽉月
結果を得るまでの合計時間: 数分
®
© 2015 MapR Technologies 7
Drill は  動的なスキーマディスカバリ  をサポート
•  固定スキーマ
•  中央管理理されたレポジトリのスキー  
マを利利⽤用  (Hive メタストア)
•  固定スキーマ、変化するスキーマ、  
もしくはスキーマレス
•  中央管理理されたレポジトリのスキーマ、  
⾃自⼰己記述型データのスキーマを利利⽤用
2動的にスキーマを発⾒見見事前にスキーマを宣⾔言
SCHEMA ON
WRITE
SCHEMA
BEFORE READ
SCHEMA ON THE
FLY
®
© 2015 MapR Technologies 8
-  サブディレクトリ
-  HBase ネームスペース
-  Hive データベース
Drill は「SQL on Everything」を可能にする
SELECT	
  *	
  FROM	
  dfs.yelp.`business.json`	
  !
ワークスペース
-  パス名
-  Hive テーブル
-  HBase テーブル
テーブル
-  DFS (Text, Parquet, JSON)
-  HBase/MapR-DB
-  Hive メタストアHCatalog/
- Hadoop 以外にも対応する簡単な API
ストレージプラグインインスタンス
®
© 2015 MapR Technologies 9
Drill のデータモデルはフレキシブル
JSON
BSON
HBase
Parquet
Avro
CSV
TSV
動的スキーマ固定スキーマ
複雑
フラット
柔軟性
Name! Gender! Age!
Michael! M! 6!
Jennifer! F! 3!
{!
name: {!
first: Michael,!
last: Smith!
},!
hobbies: [ski, soccer],!
district: Los Altos!
}!
{!
name: {!
first: Jennifer,!
last: Gates!
},!
hobbies: [sing],!
preschool: CCLC!
}!
RDBMS/SQL-on-Hadoop テーブル
Apache Drill テーブル
複雑性
®
© 2015 MapR Technologies 10
Yelp Dataset  をドリルしてみる
http://www.yelp.com/dataset_challenge
®
© 2015 MapR Technologies 11
Business
データセット
{	
  
	
  "business_id":	
  "4bEjOyTaDG24SY5TxsaUNQ",	
  
	
  "full_address":	
  "3655	
  Las	
  Vegas	
  Blvd	
  SnThe	
  StripnLas	
  Vegas,	
  NV	
  89109",	
  
	
  "hours":	
  {	
  
	
   	
  "Monday":	
  {"close":	
  "23:00",	
  "open":	
  "07:00"},	
  
	
   	
  "Tuesday":	
  {"close":	
  "23:00",	
  "open":	
  "07:00"},	
  
	
   	
  "Friday":	
  {"close":	
  "00:00",	
  "open":	
  "07:00"},	
  
	
   	
  "Wednesday":	
  {"close":	
  "23:00",	
  "open":	
  "07:00"},	
  
	
   	
  "Thursday":	
  {"close":	
  "23:00",	
  "open":	
  "07:00"},	
  
	
   	
  "Sunday":	
  {"close":	
  "23:00",	
  "open":	
  "07:00"},	
  
	
   	
  "Saturday":	
  {"close":	
  "00:00",	
  "open":	
  "07:00"}	
  
	
  },	
  
	
  "open":	
  true,	
  
	
  "categories":	
  ["Breakfast	
  &	
  Brunch",	
  "Steakhouses",	
  "French",	
  "Restaurants"],	
  
	
  "city":	
  "Las	
  Vegas",	
  
	
  "review_count":	
  4084,	
  
	
  "name":	
  "Mon	
  Ami	
  Gabi",	
  
	
  "neighborhoods":	
  ["The	
  Strip"],	
  
	
  "longitude":	
  -­‐115.172588519464,	
  
	
  "state":	
  "NV",	
  
	
  "stars":	
  4.0,	
  
	
   	
  "attributes":	
  {	
  
	
   	
  "Alcohol":	
  "full_bar”,	
  
	
   	
   	
  "Noise	
  Level":	
  "average",	
  
	
   	
  "Has	
  TV":	
  false,	
  
	
   	
  "Attire":	
  "casual",	
  
	
   	
  "Ambience":	
  {	
  
	
   	
   	
  "romantic":	
  true,	
  
	
   	
   	
  "intimate":	
  false,	
  
	
   	
   	
  "touristy":	
  false,	
  
	
   	
   	
  "hipster":	
  false,	
  
	
   	
   	
   	
  "classy":	
  true,	
  
	
   	
   	
  "trendy":	
  false,	
  
	
   	
   	
   	
  "casual":	
  false	
  
	
   	
  },	
  
	
   	
  "Good	
  For":	
  {"dessert":	
  false,	
  "latenight":	
  false,	
  "lunch":	
  false,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "dinner":	
  true,	
  "breakfast":	
  false,	
  "brunch":	
  false},	
  
	
  }	
  
}	
  
®
© 2015 MapR Technologies 12
Review データセット
{	
  
	
  	
  "votes":	
  {"funny":	
  0,	
  "useful":	
  2,	
  "cool":	
  1},	
  
	
  	
  "user_id":	
  "Xqd0DzHaiyRqVH3WRG7hzg",	
  
	
  	
  "review_id":	
  "15SdjuK7DmYqUAj6rjGowg",	
  
	
  	
  "stars":	
  5,	
  
	
  	
  "date":	
  "2007-­‐05-­‐17",	
  
	
  	
  "text":	
  "dr.	
  goldberg	
  offers	
  everything	
  ...",	
  
	
  	
  "type":	
  "review",	
  
	
  	
  "business_id":	
  "vcNAWiLM4dR7D2nwwJ7nCA"	
  
}	
  
®
© 2015 MapR Technologies 13
ゼロから結果を得るまでは  2 分
$	
  tar	
  -­‐xvzf	
  apache-­‐drill-­‐1.2.0.tar.gz	
  
	
  
$	
  bin/drill-­‐embedded	
  
	
  
>	
  SELECT	
  state,	
  city,	
  count(*)	
  AS	
  businesses	
  
	
  	
  FROM	
  dfs.yelp.`business.json`	
  
	
  	
  GROUP	
  BY	
  state,	
  city	
  
	
  	
  ORDER	
  BY	
  businesses	
  DESC	
  LIMIT	
  10;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  state	
  	
  	
  	
  |	
  	
  	
  	
  city	
  	
  	
  	
  |	
  	
  businesses	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  NV	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Las	
  Vegas	
  	
  |	
  12021	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  AZ	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Phoenix	
  	
  	
  	
  |	
  7499	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  AZ	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Scottsdale	
  |	
  3605	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  EDH	
  	
  	
  	
  	
  	
  	
  	
  |	
  Edinburgh	
  	
  |	
  2804	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  AZ	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Mesa	
  	
  	
  	
  	
  	
  	
  |	
  2041	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  AZ	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Tempe	
  	
  	
  	
  	
  	
  |	
  2025	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  NV	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Henderson	
  	
  |	
  1914	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  AZ	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Chandler	
  	
  	
  |	
  1637	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  WI	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Madison	
  	
  	
  	
  |	
  1630	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  AZ	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Glendale	
  	
  	
  |	
  1196	
  	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
インストール
ファイルやディ
レクトリにクエ
リ実⾏行行
結果
シェルを起動
(embedded
モード)
®
© 2015 MapR Technologies 14
複雑なデータに対する直感的な SQL アクセス
//	
  午後10時のラスベガス、おいしい中東料理が食べたい	
  
	
  
>	
  SELECT	
  name,	
  stars,	
  b.hours.Friday	
  friday,	
  categories	
  
	
  	
  FROM	
  dfs.yelp.`business.json`	
  b	
  
	
  	
  WHERE	
  b.hours.Friday.`open`	
  <	
  '22:00'	
  AND	
  
	
  	
  	
  	
  	
  	
  	
  	
  b.hours.Friday.`close`	
  >	
  '22:00'	
  AND	
  
	
  	
  	
  	
  	
  	
  	
  	
  REPEATED_CONTAINS(categories,	
  'Mediterranean')	
  AND	
  
	
  	
  	
  	
  	
  	
  	
  	
  city	
  =	
  'Las	
  Vegas'	
  
	
  	
  ORDER	
  BY	
  stars	
  DESC	
  
	
  	
  LIMIT	
  2;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  	
  	
  stars	
  	
  	
  	
  |	
  	
  	
  friday	
  	
  	
  |	
  categories	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Olives	
  	
  	
  	
  	
  |	
  4.0	
  	
  	
  	
  	
  	
  	
  	
  |	
  {"close":"22:30","open":"11:00"}	
  |	
  
["Mediterranean","Restaurants"]	
  |	
  
|	
  Marrakech	
  Moroccan	
  Restaurant	
  |	
  4.0	
  	
  	
  	
  	
  	
  	
  	
  |	
  {"close":"23:00","open":"17:30"}	
  |	
  
["Mediterranean","Middle	
  Eastern","Moroccan","Restaurants"]	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
どのネスト
の階層の
データも検
索索できる	
  
®
© 2015 MapR Technologies 15
ANSI SQL 互換性
//	
  Cool	
  評価が高いレストランを取得	
  
	
  
>	
  SELECT	
  b.name	
  from	
  dfs.yelp.`business.json`	
  b	
  	
  
	
  	
  	
  WHERE	
  b.business_id	
  IN	
  
	
  	
  (SELECT	
  r.business_id	
  FROM	
  dfs.yelp.`review.json`	
  r	
  
	
  	
  	
  GROUP	
  BY	
  r.business_id	
  HAVING	
  SUM(r.votes.cool)	
  >	
  2000	
  ORDER	
  BY	
  	
  
	
  	
  	
  SUM(r.votes.cool)	
  DESC);	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name 	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Earl	
  of	
  Sandwich	
  |	
  
|	
  XS	
  Nightclub	
  |	
  
|	
  The	
  Cosmopolitan	
  of	
  Las	
  Vegas	
  |	
  
|	
  Wicked	
  Spoon	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
使い慣れた SQL  
の機能 (ジョイン、
集計、ソート、
サブクエリ、
SQL データ型)  
を利利⽤用
®
© 2015 MapR Technologies 16
論論理理ビュー
//	
  business	
  および	
 review	
 データセットを組み合わせたビューを作成	
  
	
  
>	
  CREATE	
  OR	
  REPLACE	
  VIEW	
  dfs.tmp.BusinessReviews	
  AS	
  
	
  	
  	
  	
  SELECT	
  b.name,	
  b.stars,	
  r.votes.funny,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  r.votes.useful,	
  r.votes.cool,	
  r.`date`	
  
	
  	
  	
  	
  	
  	
  FROM	
  dfs.yelp.`business.json`	
  b,	
  dfs.yelp.`review.json`	
  r	
  
	
  	
  	
  	
  	
  	
  WHERE	
  r.business_id	
  =	
  b.business_id;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  	
  ok	
  	
  	
  	
  	
  |	
  	
  summary	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  true	
  	
  	
  	
  	
  	
  	
  |	
  View	
  'BusinessReviews'	
  created	
  successfully	
  in	
  'dfs.tmp'	
  schema	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
	
  
>	
  SELECT	
  COUNT(*)	
  AS	
  Total	
  FROM	
  dfs.tmp.BusinessReviews;	
  
	
  
+------------+
| Total |
+------------+
| 1125458 |
+------------+
粒粒度度が細かく、
分散的な管理理を
可能にする、軽
量量なファイルシ
ステムベースの
ビュー	
  
®
© 2015 MapR Technologies 17
マテリアライズドビュー、またの名を、テーブル
>	
  ALTER	
  SESSION	
  SET	
  `store.format`	
  =	
  'parquet';	
  
	
  
>	
  CREATE	
  TABLE	
  dfs.yelp.BusinessReviewsTbl	
  AS	
  
	
  	
  	
  	
  SELECT	
  b.name,	
  b.stars,	
  r.votes.funny	
  funny,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  r.votes.useful	
  useful,	
  r.votes.cool	
  cool,	
  r.`date`	
  
	
  	
  	
  	
  	
  	
  FROM	
  dfs.yelp.`business.json`	
  b,	
  dfs.yelp.`review.json`	
  r	
  
	
  	
  	
  	
  	
  	
  WHERE	
  r.business_id	
  =	
  b.business_id;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  Fragment	
  	
  |	
  Number	
  of	
  records	
  written	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  1_0	
  	
  	
  	
  	
  	
  	
  	
  |	
  176448	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  1_1	
  	
  	
  	
  	
  	
  	
  	
  |	
  192439	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  1_2	
  	
  	
  	
  	
  	
  	
  	
  |	
  198625	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  1_3	
  	
  	
  	
  	
  	
  	
  	
  |	
  200863	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  1_4	
  	
  	
  	
  	
  	
  	
  	
  |	
  181420	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  1_5	
  	
  	
  	
  	
  	
  	
  	
  |	
  175663	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
使い慣れた  
CTAS  シンタッ
クスを利利⽤用し、
分析結果をテー
ブルとして保存
®
© 2015 MapR Technologies 18
繰り返し値のサポート
//	
  カテゴリの繰り返しをフラット化	
  
	
  
>	
  SELECT	
  name,	
  categories	
  
	
  	
  FROM	
  dfs.yelp.`business.json`	
  LIMIT	
  3;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  categories	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Eric	
  Goldberg,	
  MD	
  |	
  ["Doctors","Health	
  &	
  Medical"]	
  |	
  
|	
  Pine	
  Cone	
  Restaurant	
  |	
  ["Restaurants"]	
  |	
  
|	
  Deforest	
  Family	
  Restaurant	
  |	
  ["American	
  (Traditional)","Restaurants"]	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
	
  
>	
  SELECT	
  name,	
  FLATTEN(categories)	
  AS	
  categories	
  
	
  	
  FROM	
  dfs.yelp.`business.json`	
  LIMIT	
  5;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  categories	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Eric	
  Goldberg,	
  MD	
  |	
  Doctors	
  	
  	
  	
  |	
  
|	
  Eric	
  Goldberg,	
  MD	
  |	
  Health	
  &	
  Medical	
  |	
  
|	
  Pine	
  Cone	
  Restaurant	
  |	
  Restaurants	
  |	
  
|	
  Deforest	
  Family	
  Restaurant	
  |	
  American	
  (Traditional)	
  |	
  
|	
  Deforest	
  Family	
  Restaurant	
  |	
  Restaurants	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
SQL  クエリの
⼀一部として、繰
り返しやネスト
データ要素を動
的にフラット化
®
© 2015 MapR Technologies 19
繰り返し値を扱うための  ANSI SQL の拡張
//	
  Get	
  most	
  common	
  business	
  categories	
  
	
  	
  
>	
  SELECT	
  category,	
  count(*)	
  AS	
  categorycount	
  
	
  	
  FROM	
  (SELECT	
  name,	
  FLATTEN(categories)	
  AS	
  category	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  dfs.yelp.`business.json`)	
  c	
  
	
  	
  GROUP	
  BY	
  category	
  ORDER	
  BY	
  categorycount	
  DESC;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  category	
  	
  |	
  categorycount|	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Restaurants	
  |	
  14303	
  	
  	
  	
  	
  	
  |	
  
…	
  
|	
  Australian	
  |	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Boat	
  Dealers	
  |	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Firewood	
  	
  	
  |	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2015 MapR Technologies 20
Check in
データセット
{	
  	
  
	
  	
  	
  "checkin_info":{	
  	
  
	
  	
  	
  	
  	
  	
  "3-­‐4":1,	
  
	
  	
  	
  	
  	
  	
  "13-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "6-­‐6":1,	
  
	
  	
  	
  	
  	
  	
  "14-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "14-­‐6":1,	
  
	
  	
  	
  	
  	
  	
  "14-­‐2":1,	
  
	
  	
  	
  	
  	
  	
  "14-­‐3":1,	
  
	
  	
  	
  	
  	
  	
  "19-­‐0":1,	
  
	
  	
  	
  	
  	
  	
  "11-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "13-­‐2":1,	
  
	
  	
  	
  	
  	
  	
  "11-­‐6":2,	
  
	
  	
  	
  	
  	
  	
  "11-­‐3":1,	
  
	
  	
  	
  	
  	
  	
  "12-­‐6":1,	
  
	
  	
  	
  	
  	
  	
  "6-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "5-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "9-­‐2":1,	
  
	
  	
  	
  	
  	
  	
  "9-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "9-­‐6":1,	
  
	
  	
  	
  	
  	
  	
  "5-­‐2":1,	
  
	
  	
  	
  	
  	
  	
  "7-­‐6":1,	
  
	
  	
  	
  	
  	
  	
  "7-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "7-­‐4":1,	
  
	
  	
  	
  	
  	
  	
  "17-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "8-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "10-­‐2":1,	
  
	
  	
  	
  	
  	
  	
  "10-­‐5":1,	
  
	
  	
  	
  	
  	
  	
  "10-­‐6":1	
  
	
  	
  	
  },	
  
	
  	
  	
  "type":"checkin",	
  
	
  	
  	
  "business_id":"JwUE5GmEO-­‐sH1FuwJgKBlQ"	
  
}	
  
®
© 2015 MapR Technologies 21
動的な/未知のカラムのサポート
>	
  SELECT	
  KVGEN(checkin_info)	
  checkins	
  	
  
	
  	
  	
  FROM	
  dfs.yelp.`checkin.json`	
  LIMIT	
  1;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  checkins	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  [{"key":"3-­‐4","value":1},{"key":"13-­‐5","value":1},{"key":"6-­‐6","value":1},{"key":"14-­‐5","value":1},
{"key":"14-­‐6","value":1},{"key":"14-­‐2","value":1},{"key":"14-­‐3","value":1},{"key":"19-­‐0","value":1},
{"key":"11-­‐5","value":1},{"key":"13-­‐2","value":1},{"key":"11-­‐6","value":2},{"key":"11-­‐3","value":1},
{"key":"12-­‐6","value":1},{"key":"6-­‐5","value":1},{"key":"5-­‐5","value":1},{"key":"9-­‐2","value":1},
{"key":"9-­‐5","value":1},{"key":"9-­‐6","value":1},{"key":"5-­‐2","value":1},{"key":"7-­‐6","value":1},
{"key":"7-­‐5","value":1},{"key":"7-­‐4","value":1},{"key":"17-­‐5","value":1},{"key":"8-­‐5","value":1},
{"key":"10-­‐2","value":1},{"key":"10-­‐5","value":1},{"key":"10-­‐6","value":1}]	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
	
  
>	
  SELECT	
  FLATTEN(KVGEN(checkin_info))	
  checkins	
  FROM	
  
dfs.yelp.`checkin.json`	
  limit	
  6;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  checkins	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  {"key":"3-­‐4","value":1}	
  |	
  
|	
  {"key":"13-­‐5","value":1}	
  |	
  
|	
  {"key":"6-­‐6","value":1}	
  |	
  
|	
  {"key":"14-­‐5","value":1}	
  |	
  
|	
  {"key":"14-­‐6","value":1}	
  |	
  
|	
  {"key":"14-­‐2","value":1}	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
動的なカラムを
数多く伴う
Map を key-
value ペアの配
列列に変換
®
© 2015 MapR Technologies 22
動的な/未知のカラムの扱いを簡単に
//	
  日曜深夜のチェックイン数の合計を求める	
  
	
  
>	
  SELECT	
  SUM(checkintbl.checkins.`value`)	
  as	
  SundayMidnightCheckins	
  
FROM	
  	
  
	
  	
  	
  (SELECT	
  FLATTEN(KVGEN(checkin_info))	
  checkins	
  
	
  	
  	
  	
  FROM	
  dfs.yelp.checkin.json`)	
  checkintbl	
  	
  
	
  	
  	
  	
  WHERE	
  checkintbl.checkins.key='23-­‐0';	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  SundayMidnightCheckins	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  8575	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2015 MapR Technologies 23
データソースをまたいだクエリ
//	
  JSON	
  ファイル、Parquet、MongoDB	
  コレクションをジョイン	
  
	
  
>	
  SELECT	
  u.name,	
  b.category,	
  count(1)	
  nb_review	
  
FROM	
  mongo.yelp.`user`	
  u,	
  dfs.yelp.`review.parquet`	
  r,	
  (select	
  business_id,	
  
flatten(categories)	
  category	
  from	
  dfs.yelp.`business.json`	
  )	
  b	
  
WHERE	
  u.user_id	
  =	
  r.user_id	
  
AND	
  b.business_id	
  =	
  r.business_id	
  
GROUP	
  BY	
  u.user_id,	
  u.name,	
  b.category	
  
ORDER	
  BY	
  nb_review	
  DESC	
  
LIMIT	
  10;	
  
	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  name	
  	
  	
  	
  |	
  	
  	
  category	
  	
  	
  |	
  nb_review	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Rand	
  	
  	
  	
  	
  	
  |	
  Restaurants	
  	
  |	
  1086	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  J	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Restaurants	
  	
  |	
  661	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Jennifer	
  	
  |	
  Restaurants	
  	
  |	
  657	
  	
  	
  	
  	
  	
  	
  	
  |	
  
...............	
  
®
© 2015 MapR Technologies 24
ディレクトリは暗黙的なパーティション
logs	
  
├──	
  2014	
  
│	
  	
  	
  ├──	
  1	
  
│	
  	
  	
  ├──	
  2	
  
│	
  	
  	
  ├──	
  3	
  
│	
  	
  	
  └──	
  4	
  
└──	
  2015	
  
	
  	
  	
  	
  └──	
  1	
  
select	
  dir0,	
  count(1)	
  
from	
  dfs.logs.`*`	
  
where	
  dir1	
  in	
  (1,2,3)	
  
group	
  by	
  dir0	
  
®
© 2015 MapR Technologies 25
どのように動作するのか?
®
© 2015 MapR Technologies 26
すべては「Drillbit」
•  「Drillbit」が各ノードで動作
•  インメモリカラムナ実⾏行行
•  コーディネーション、プランニング、実⾏行行
•  ネットワーク接続もしくは未接続
•  JDBC, ODBC, REST をサポート
•  組み込み  Web UI および  CLI
•  拡張性
–  カスタム関数
–  データソース
Drillbit
®
© 2015 MapR Technologies 27
データ局所性
HDFS	
 HDFS	
 HDFS	
mongod	
 mongod	
Windows	
HDFS	
 HDFS	
 HDFS	
HBase	
 HBase	
 HBase	
Mac	
クラスタ デスクトップ
HDFS & HBase クラスタ
HDFS クラスタ
MongoDB クラスタ
®
© 2015 MapR Technologies 28
データのあるところで  Drillbit を動作させる
HDFS	
 HDFS	
 HDFS	
mongod	
 mongod	
Windows	
HDFS	
 HDFS	
 HDFS	
HBase	
 HBase	
 HBase	
Mac	
Drillbit	
 Drillbit	
Drillbit	
 Drillbit	
 Drillbit	
Drillbit	
 Drillbit	
 Drillbit	
Drillbit	
Drillbit	
クラスタ デスクトップ
HDFS & HBase クラスタ
HDFS クラスタ
MongoDB クラスタ
®
© 2015 MapR Technologies 29
クエリ実⾏行行
•  クライアントがいずれかの  Drillbit  に接続
•  その  Drillbit は  Foreman(監督)になる
•  Foreman は実⾏行行プランを⽣生成
–  コストベースクエリ最適化
Drillbit	
 Drillbit	
 Drillbit	
クライアント
®
© 2015 MapR Technologies 30
クエリ実⾏行行
•  実⾏行行  Fragment が他の  Drillbit  に委託される
•  Drillbit は必要に応じてデータを交換
Drillbit	
 Drillbit	
 Drillbit	
クライアント
®
© 2015 MapR Technologies 31
クエリ実⾏行行
•  結果は  Foreman を経由してユーザに返る
Drillbit	
 Drillbit	
 Drillbit	
クライアント
®
© 2015 MapR Technologies 32
セキュリティは?
®
© 2015 MapR Technologies 33
Drill View を介した粒粒度度の細かいセキュリティ
Name City State Credit Card #
Dave San Jose CA 1374-7914-3865-4817
John Boulder CO 1374-9735-1794-9711
Raw ファイル (/raw/cards.csv)
オーナー
Admins
パーミッション  
Admins
ビジネスアナリスト データサイエンティスト
Name City State Credit Card #
Dave San Jose CA 1374-1111-1111-1111
John Boulder CO 1374-1111-1111-1111
データサイエンティスト  View (/views/maskedcards.csv)
物理理データコピーではない
Name City State
Dave San Jose CA
John Boulder CO
ビジネスアナリスト  View
オーナー
Admins
パーミッション
Business
Analysts
オーナー
Admins
パーミッション
Data
Scientists
®
© 2015 MapR Technologies 34
拡張性
®
© 2015 MapR Technologies 35
Apache Drill の拡張
•  ファイルフォーマット
–  ORC
–  XML
–  ...
•  データソース
–  NoSQL データベース
–  検索索エンジン
–  REST
–  ...
•  カスタム関数
®
© 2015 MapR Technologies 36
Drill  を始める際のおすすめ
•  Drill 初⼼心者は?
–  無料料の  MapR オンライントレーニング
–  AWS のクラウド上の  Test Drive Drill
–  MapR Sandbox を利利⽤用した Drill with Hadoop の学習
•  データを分析してみたい⼈人は?
–  デスクトップ PC で「Apache Drill in 10 mins」ガイドを試す
–  Drill をクラスタにダウンロードしてデータ探索索を始める
–  幅広いチュートリアルとドキュメント
•  質問は
–  user@drill.apache.org
–  dev@drill.apache.org
®
© 2015 MapR Technologies 37
®
© 2015 MapR Technologies 38
Q&A
@mapr_japan maprjapan
sales-jp@mapr.com
お問い合わせはこちらまで
MapR
maprtech
mapr-technologies

More Related Content

PDF
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
PDF
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
PPTX
Apache Drill で日本語を扱ってみよう + オープンデータ解析
PDF
Apache Drill を利用した実データの分析
PDF
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
PDF
Drill超簡単チューニング
PDF
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
PDF
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill を利用した実データの分析
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
Drill超簡単チューニング
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09

What's hot (20)

PDF
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
PDF
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
PDF
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
PDF
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
PDF
時系列の世界の時系列データ
PDF
MapR M7 技術概要
PDF
Hadoop入門
PPTX
Hadoopソースコードリーディング8/MapRを使ってみた
PDF
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
PDF
Hadoopのシステム設計・運用のポイント
PDF
Fast Data を扱うためのデザインパターン
PPTX
今さら聞けないHadoop セントラルソフト株式会社(20120119)
PDF
MapReduce入門
PDF
Kuduを調べてみた #dogenzakalt
PDF
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
PDF
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
PPTX
Hadoop Troubleshooting 101 - Japanese Version
ODP
Hadoop for programmer
PDF
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
PDF
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
時系列の世界の時系列データ
MapR M7 技術概要
Hadoop入門
Hadoopソースコードリーディング8/MapRを使ってみた
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
Hadoopのシステム設計・運用のポイント
Fast Data を扱うためのデザインパターン
今さら聞けないHadoop セントラルソフト株式会社(20120119)
MapReduce入門
Kuduを調べてみた #dogenzakalt
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
Hadoop Troubleshooting 101 - Japanese Version
Hadoop for programmer
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Ad

Viewers also liked (9)

PPTX
Design Patterns for working with Fast Data
PPT
時系列データ分析
PDF
異常検知 - 何を探すかよく分かっていないものを見つける方法
PDF
異常検知と変化検知 第4章 近傍法による異常検知
PDF
Recent Progress in RNN and NLP
PPTX
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
PPTX
機械学習を用いた異常検知入門
PDF
新たなRNNと自然言語処理
PDF
FIT2012招待講演「異常検知技術のビジネス応用最前線」
Design Patterns for working with Fast Data
時系列データ分析
異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知と変化検知 第4章 近傍法による異常検知
Recent Progress in RNN and NLP
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
機械学習を用いた異常検知入門
新たなRNNと自然言語処理
FIT2012招待講演「異常検知技術のビジネス応用最前線」
Ad

Similar to Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12 (6)

PDF
Akama 情報分類 final
PPTX
Gourmettrends
PPTX
00002web集客の最大化を実現「外食版seoサービス」
PDF
焼鳥屋の GMB×Tableau
PPTX
2020/11/11 焼鳥屋のGMB×Tableau
KEY
はじめてのCouch db
Akama 情報分類 final
Gourmettrends
00002web集客の最大化を実現「外食版seoサービス」
焼鳥屋の GMB×Tableau
2020/11/11 焼鳥屋のGMB×Tableau
はじめてのCouch db

More from MapR Technologies Japan (9)

PDF
MapR Streams & MapR コンバージド・データ・プラットフォーム
PDF
Hadoop によるゲノム解読
PDF
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
PDF
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
PDF
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
PDF
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
PDF
エンタープライズ NoSQL/HBase プラットフォーム – MapR M7 エディション - db tech showcase 大阪 2014 201...
PDF
Hadoop最新情報 - YARN, Omni, Drill, Impala, Shark, Vertica - MapR CTO Meetup 2014...
PDF
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26
MapR Streams & MapR コンバージド・データ・プラットフォーム
Hadoop によるゲノム解読
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
エンタープライズ NoSQL/HBase プラットフォーム – MapR M7 エディション - db tech showcase 大阪 2014 201...
Hadoop最新情報 - YARN, Omni, Drill, Impala, Shark, Vertica - MapR CTO Meetup 2014...
ビジネスへの本格活用が始まったHadoopの今 ~MapRが選ばれる理由~ - ビッグデータEXPO東京 2014/02/26

Recently uploaded (9)

PDF
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
PDF
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
PDF
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
PDF
口腔内スキャナー市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
PDF
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
PDF
液体クラトム抽出物供給側分析:世界の生産能力・販売量・平均価格動向(2025-2031)
PDF
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
PDF
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
Qlik TECH TALK セミナー:What's New In Qlik ~ 2025年7月リリース最新機能のご紹介
商用ウェブカメラ市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
グローバルロープウェイ用スチールワイヤーロープ市場2025:主要企業のシェア、売上動向、競争戦略
限外ろ過膜調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
口腔内スキャナー市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
【QYResearch】人形ロボット産業の市場構造と今後の発展方向に関する分析レポート
液体クラトム抽出物供給側分析:世界の生産能力・販売量・平均価格動向(2025-2031)
XCMSを用いた質量分析データ処理_BioCAsia2021_yamamoto.pdf
世界半導体用酸化ハフニウム市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031

Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12

  • 1. ® © 2015 MapR Technologies 1 ® © 2015 MapR Technologies Drilling Into Data With Apache Drill Ted Dunning – Chef Application Architect, MapR Technologies 2015 年年 11 ⽉月  12 ⽇日
  • 2. ® © 2015 MapR Technologies 2 {“about” : “me”}
  • 3. ® © 2015 MapR Technologies 3 アジェンダ •  Why Drill? •  オープンデータの探索索の例例 •  どのように動作するのか?
  • 4. ® © 2015 MapR Technologies 4 1980 2000 20101990 2020 固定スキーマ DB管理理者が構造を管理理 動的/柔軟なスキーマ アプリケーションが構造を管理理 ⾮非リレーショナルデータベースリレーショナルデータベース GB〜~TB TB〜~PBデータサイズ データベース データは⾮非リレーショナルデータストアに向かう データ構造 開発スタイル 構造化 構造化、半構造化、⾮非構造化 計画的(リリースサイクル=数ヶ⽉月〜~数年年) 反復復的(リリースサイクル=数⽇日〜~数週間)
  • 5. ® © 2015 MapR Technologies 5 ⾮非リレーショナルデータストアにSQLを持ち込む SQL の親しみやすさ NoSQL の機敏さ •  ANSI SQL セマンティクス •  低レイテンシ •  ツール/アプリケーションと の連携 •  スキーマ管理理なし –  HDFS (Parquet、JSON など) –  HBase –  … •  データ変換・複製なし –  データのサイロ化を防ぐ •  使いやすさ
  • 6. ® © 2015 MapR Technologies 6 即時分析により「即断可能な」ビジネスを実現 Hadoop
 データ データ モデリング 変換 データ移動 (任意) ユーザー Hadoop
 データ ユーザー 管理理された アプローチ 探索索的な アプローチ 新しいビジネスの問いかけソースデータの変更更 結果を得るまでの合計時間: 数週間から数ヶ⽉月 結果を得るまでの合計時間: 数分
  • 7. ® © 2015 MapR Technologies 7 Drill は  動的なスキーマディスカバリ  をサポート •  固定スキーマ •  中央管理理されたレポジトリのスキー   マを利利⽤用  (Hive メタストア) •  固定スキーマ、変化するスキーマ、   もしくはスキーマレス •  中央管理理されたレポジトリのスキーマ、   ⾃自⼰己記述型データのスキーマを利利⽤用 2動的にスキーマを発⾒見見事前にスキーマを宣⾔言 SCHEMA ON WRITE SCHEMA BEFORE READ SCHEMA ON THE FLY
  • 8. ® © 2015 MapR Technologies 8 -  サブディレクトリ -  HBase ネームスペース -  Hive データベース Drill は「SQL on Everything」を可能にする SELECT  *  FROM  dfs.yelp.`business.json`  ! ワークスペース -  パス名 -  Hive テーブル -  HBase テーブル テーブル -  DFS (Text, Parquet, JSON) -  HBase/MapR-DB -  Hive メタストアHCatalog/ - Hadoop 以外にも対応する簡単な API ストレージプラグインインスタンス
  • 9. ® © 2015 MapR Technologies 9 Drill のデータモデルはフレキシブル JSON BSON HBase Parquet Avro CSV TSV 動的スキーマ固定スキーマ 複雑 フラット 柔軟性 Name! Gender! Age! Michael! M! 6! Jennifer! F! 3! {! name: {! first: Michael,! last: Smith! },! hobbies: [ski, soccer],! district: Los Altos! }! {! name: {! first: Jennifer,! last: Gates! },! hobbies: [sing],! preschool: CCLC! }! RDBMS/SQL-on-Hadoop テーブル Apache Drill テーブル 複雑性
  • 10. ® © 2015 MapR Technologies 10 Yelp Dataset  をドリルしてみる http://www.yelp.com/dataset_challenge
  • 11. ® © 2015 MapR Technologies 11 Business データセット {    "business_id":  "4bEjOyTaDG24SY5TxsaUNQ",    "full_address":  "3655  Las  Vegas  Blvd  SnThe  StripnLas  Vegas,  NV  89109",    "hours":  {      "Monday":  {"close":  "23:00",  "open":  "07:00"},      "Tuesday":  {"close":  "23:00",  "open":  "07:00"},      "Friday":  {"close":  "00:00",  "open":  "07:00"},      "Wednesday":  {"close":  "23:00",  "open":  "07:00"},      "Thursday":  {"close":  "23:00",  "open":  "07:00"},      "Sunday":  {"close":  "23:00",  "open":  "07:00"},      "Saturday":  {"close":  "00:00",  "open":  "07:00"}    },    "open":  true,    "categories":  ["Breakfast  &  Brunch",  "Steakhouses",  "French",  "Restaurants"],    "city":  "Las  Vegas",    "review_count":  4084,    "name":  "Mon  Ami  Gabi",    "neighborhoods":  ["The  Strip"],    "longitude":  -­‐115.172588519464,    "state":  "NV",    "stars":  4.0,      "attributes":  {      "Alcohol":  "full_bar”,        "Noise  Level":  "average",      "Has  TV":  false,      "Attire":  "casual",      "Ambience":  {        "romantic":  true,        "intimate":  false,        "touristy":  false,        "hipster":  false,          "classy":  true,        "trendy":  false,          "casual":  false      },      "Good  For":  {"dessert":  false,  "latenight":  false,  "lunch":  false,                                                  "dinner":  true,  "breakfast":  false,  "brunch":  false},    }   }  
  • 12. ® © 2015 MapR Technologies 12 Review データセット {      "votes":  {"funny":  0,  "useful":  2,  "cool":  1},      "user_id":  "Xqd0DzHaiyRqVH3WRG7hzg",      "review_id":  "15SdjuK7DmYqUAj6rjGowg",      "stars":  5,      "date":  "2007-­‐05-­‐17",      "text":  "dr.  goldberg  offers  everything  ...",      "type":  "review",      "business_id":  "vcNAWiLM4dR7D2nwwJ7nCA"   }  
  • 13. ® © 2015 MapR Technologies 13 ゼロから結果を得るまでは  2 分 $  tar  -­‐xvzf  apache-­‐drill-­‐1.2.0.tar.gz     $  bin/drill-­‐embedded     >  SELECT  state,  city,  count(*)  AS  businesses      FROM  dfs.yelp.`business.json`      GROUP  BY  state,  city      ORDER  BY  businesses  DESC  LIMIT  10;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |      state        |        city        |    businesses  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  NV                  |  Las  Vegas    |  12021              |   |  AZ                  |  Phoenix        |  7499                |   |  AZ                  |  Scottsdale  |  3605                |   |  EDH                |  Edinburgh    |  2804                |   |  AZ                  |  Mesa              |  2041                |   |  AZ                  |  Tempe            |  2025                |   |  NV                  |  Henderson    |  1914                |   |  AZ                  |  Chandler      |  1637                |   |  WI                  |  Madison        |  1630                |   |  AZ                  |  Glendale      |  1196                |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   インストール ファイルやディ レクトリにクエ リ実⾏行行 結果 シェルを起動 (embedded モード)
  • 14. ® © 2015 MapR Technologies 14 複雑なデータに対する直感的な SQL アクセス //  午後10時のラスベガス、おいしい中東料理が食べたい     >  SELECT  name,  stars,  b.hours.Friday  friday,  categories      FROM  dfs.yelp.`business.json`  b      WHERE  b.hours.Friday.`open`  <  '22:00'  AND                  b.hours.Friday.`close`  >  '22:00'  AND                  REPEATED_CONTAINS(categories,  'Mediterranean')  AND                  city  =  'Las  Vegas'      ORDER  BY  stars  DESC      LIMIT  2;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |      stars        |      friday      |  categories  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Olives          |  4.0                |  {"close":"22:30","open":"11:00"}  |   ["Mediterranean","Restaurants"]  |   |  Marrakech  Moroccan  Restaurant  |  4.0                |  {"close":"23:00","open":"17:30"}  |   ["Mediterranean","Middle  Eastern","Moroccan","Restaurants"]  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   どのネスト の階層の データも検 索索できる  
  • 15. ® © 2015 MapR Technologies 15 ANSI SQL 互換性 //  Cool  評価が高いレストランを取得     >  SELECT  b.name  from  dfs.yelp.`business.json`  b          WHERE  b.business_id  IN      (SELECT  r.business_id  FROM  dfs.yelp.`review.json`  r        GROUP  BY  r.business_id  HAVING  SUM(r.votes.cool)  >  2000  ORDER  BY          SUM(r.votes.cool)  DESC);     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Earl  of  Sandwich  |   |  XS  Nightclub  |   |  The  Cosmopolitan  of  Las  Vegas  |   |  Wicked  Spoon  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   使い慣れた SQL   の機能 (ジョイン、 集計、ソート、 サブクエリ、 SQL データ型)   を利利⽤用
  • 16. ® © 2015 MapR Technologies 16 論論理理ビュー //  business  および review データセットを組み合わせたビューを作成     >  CREATE  OR  REPLACE  VIEW  dfs.tmp.BusinessReviews  AS          SELECT  b.name,  b.stars,  r.votes.funny,                        r.votes.useful,  r.votes.cool,  r.`date`              FROM  dfs.yelp.`business.json`  b,  dfs.yelp.`review.json`  r              WHERE  r.business_id  =  b.business_id;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |          ok          |    summary      |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  true              |  View  'BusinessReviews'  created  successfully  in  'dfs.tmp'  schema  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+     >  SELECT  COUNT(*)  AS  Total  FROM  dfs.tmp.BusinessReviews;     +------------+ | Total | +------------+ | 1125458 | +------------+ 粒粒度度が細かく、 分散的な管理理を 可能にする、軽 量量なファイルシ ステムベースの ビュー  
  • 17. ® © 2015 MapR Technologies 17 マテリアライズドビュー、またの名を、テーブル >  ALTER  SESSION  SET  `store.format`  =  'parquet';     >  CREATE  TABLE  dfs.yelp.BusinessReviewsTbl  AS          SELECT  b.name,  b.stars,  r.votes.funny  funny,                        r.votes.useful  useful,  r.votes.cool  cool,  r.`date`              FROM  dfs.yelp.`business.json`  b,  dfs.yelp.`review.json`  r              WHERE  r.business_id  =  b.business_id;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |    Fragment    |  Number  of  records  written  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  1_0                |  176448                                        |   |  1_1                |  192439                                        |   |  1_2                |  198625                                        |   |  1_3                |  200863                                        |   |  1_4                |  181420                                        |   |  1_5                |  175663                                        |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   使い慣れた   CTAS  シンタッ クスを利利⽤用し、 分析結果をテー ブルとして保存
  • 18. ® © 2015 MapR Technologies 18 繰り返し値のサポート //  カテゴリの繰り返しをフラット化     >  SELECT  name,  categories      FROM  dfs.yelp.`business.json`  LIMIT  3;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |  categories  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Eric  Goldberg,  MD  |  ["Doctors","Health  &  Medical"]  |   |  Pine  Cone  Restaurant  |  ["Restaurants"]  |   |  Deforest  Family  Restaurant  |  ["American  (Traditional)","Restaurants"]  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+     >  SELECT  name,  FLATTEN(categories)  AS  categories      FROM  dfs.yelp.`business.json`  LIMIT  5;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |  categories  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Eric  Goldberg,  MD  |  Doctors        |   |  Eric  Goldberg,  MD  |  Health  &  Medical  |   |  Pine  Cone  Restaurant  |  Restaurants  |   |  Deforest  Family  Restaurant  |  American  (Traditional)  |   |  Deforest  Family  Restaurant  |  Restaurants  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   SQL  クエリの ⼀一部として、繰 り返しやネスト データ要素を動 的にフラット化
  • 19. ® © 2015 MapR Technologies 19 繰り返し値を扱うための  ANSI SQL の拡張 //  Get  most  common  business  categories       >  SELECT  category,  count(*)  AS  categorycount      FROM  (SELECT  name,  FLATTEN(categories)  AS  category                  FROM  dfs.yelp.`business.json`)  c      GROUP  BY  category  ORDER  BY  categorycount  DESC;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |    category    |  categorycount|   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Restaurants  |  14303            |   …   |  Australian  |  1                    |   |  Boat  Dealers  |  1                    |   |  Firewood      |  1                    |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 20. ® © 2015 MapR Technologies 20 Check in データセット {          "checkin_info":{                "3-­‐4":1,              "13-­‐5":1,              "6-­‐6":1,              "14-­‐5":1,              "14-­‐6":1,              "14-­‐2":1,              "14-­‐3":1,              "19-­‐0":1,              "11-­‐5":1,              "13-­‐2":1,              "11-­‐6":2,              "11-­‐3":1,              "12-­‐6":1,              "6-­‐5":1,              "5-­‐5":1,              "9-­‐2":1,              "9-­‐5":1,              "9-­‐6":1,              "5-­‐2":1,              "7-­‐6":1,              "7-­‐5":1,              "7-­‐4":1,              "17-­‐5":1,              "8-­‐5":1,              "10-­‐2":1,              "10-­‐5":1,              "10-­‐6":1        },        "type":"checkin",        "business_id":"JwUE5GmEO-­‐sH1FuwJgKBlQ"   }  
  • 21. ® © 2015 MapR Technologies 21 動的な/未知のカラムのサポート >  SELECT  KVGEN(checkin_info)  checkins          FROM  dfs.yelp.`checkin.json`  LIMIT  1;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |    checkins    |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  [{"key":"3-­‐4","value":1},{"key":"13-­‐5","value":1},{"key":"6-­‐6","value":1},{"key":"14-­‐5","value":1}, {"key":"14-­‐6","value":1},{"key":"14-­‐2","value":1},{"key":"14-­‐3","value":1},{"key":"19-­‐0","value":1}, {"key":"11-­‐5","value":1},{"key":"13-­‐2","value":1},{"key":"11-­‐6","value":2},{"key":"11-­‐3","value":1}, {"key":"12-­‐6","value":1},{"key":"6-­‐5","value":1},{"key":"5-­‐5","value":1},{"key":"9-­‐2","value":1}, {"key":"9-­‐5","value":1},{"key":"9-­‐6","value":1},{"key":"5-­‐2","value":1},{"key":"7-­‐6","value":1}, {"key":"7-­‐5","value":1},{"key":"7-­‐4","value":1},{"key":"17-­‐5","value":1},{"key":"8-­‐5","value":1}, {"key":"10-­‐2","value":1},{"key":"10-­‐5","value":1},{"key":"10-­‐6","value":1}]  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+     >  SELECT  FLATTEN(KVGEN(checkin_info))  checkins  FROM   dfs.yelp.`checkin.json`  limit  6;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |    checkins    |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  {"key":"3-­‐4","value":1}  |   |  {"key":"13-­‐5","value":1}  |   |  {"key":"6-­‐6","value":1}  |   |  {"key":"14-­‐5","value":1}  |   |  {"key":"14-­‐6","value":1}  |   |  {"key":"14-­‐2","value":1}  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   動的なカラムを 数多く伴う Map を key- value ペアの配 列列に変換
  • 22. ® © 2015 MapR Technologies 22 動的な/未知のカラムの扱いを簡単に //  日曜深夜のチェックイン数の合計を求める     >  SELECT  SUM(checkintbl.checkins.`value`)  as  SundayMidnightCheckins   FROM          (SELECT  FLATTEN(KVGEN(checkin_info))  checkins          FROM  dfs.yelp.checkin.json`)  checkintbl            WHERE  checkintbl.checkins.key='23-­‐0';     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  SundayMidnightCheckins  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  8575                                      |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 23. ® © 2015 MapR Technologies 23 データソースをまたいだクエリ //  JSON  ファイル、Parquet、MongoDB  コレクションをジョイン     >  SELECT  u.name,  b.category,  count(1)  nb_review   FROM  mongo.yelp.`user`  u,  dfs.yelp.`review.parquet`  r,  (select  business_id,   flatten(categories)  category  from  dfs.yelp.`business.json`  )  b   WHERE  u.user_id  =  r.user_id   AND  b.business_id  =  r.business_id   GROUP  BY  u.user_id,  u.name,  b.category   ORDER  BY  nb_review  DESC   LIMIT  10;     +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |      name        |      category      |  nb_review    |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Rand            |  Restaurants    |  1086              |   |  J                  |  Restaurants    |  661                |   |  Jennifer    |  Restaurants    |  657                |   ...............  
  • 24. ® © 2015 MapR Technologies 24 ディレクトリは暗黙的なパーティション logs   ├──  2014   │      ├──  1   │      ├──  2   │      ├──  3   │      └──  4   └──  2015          └──  1   select  dir0,  count(1)   from  dfs.logs.`*`   where  dir1  in  (1,2,3)   group  by  dir0  
  • 25. ® © 2015 MapR Technologies 25 どのように動作するのか?
  • 26. ® © 2015 MapR Technologies 26 すべては「Drillbit」 •  「Drillbit」が各ノードで動作 •  インメモリカラムナ実⾏行行 •  コーディネーション、プランニング、実⾏行行 •  ネットワーク接続もしくは未接続 •  JDBC, ODBC, REST をサポート •  組み込み  Web UI および  CLI •  拡張性 –  カスタム関数 –  データソース Drillbit
  • 27. ® © 2015 MapR Technologies 27 データ局所性 HDFS HDFS HDFS mongod mongod Windows HDFS HDFS HDFS HBase HBase HBase Mac クラスタ デスクトップ HDFS & HBase クラスタ HDFS クラスタ MongoDB クラスタ
  • 28. ® © 2015 MapR Technologies 28 データのあるところで  Drillbit を動作させる HDFS HDFS HDFS mongod mongod Windows HDFS HDFS HDFS HBase HBase HBase Mac Drillbit Drillbit Drillbit Drillbit Drillbit Drillbit Drillbit Drillbit Drillbit Drillbit クラスタ デスクトップ HDFS & HBase クラスタ HDFS クラスタ MongoDB クラスタ
  • 29. ® © 2015 MapR Technologies 29 クエリ実⾏行行 •  クライアントがいずれかの  Drillbit  に接続 •  その  Drillbit は  Foreman(監督)になる •  Foreman は実⾏行行プランを⽣生成 –  コストベースクエリ最適化 Drillbit Drillbit Drillbit クライアント
  • 30. ® © 2015 MapR Technologies 30 クエリ実⾏行行 •  実⾏行行  Fragment が他の  Drillbit  に委託される •  Drillbit は必要に応じてデータを交換 Drillbit Drillbit Drillbit クライアント
  • 31. ® © 2015 MapR Technologies 31 クエリ実⾏行行 •  結果は  Foreman を経由してユーザに返る Drillbit Drillbit Drillbit クライアント
  • 32. ® © 2015 MapR Technologies 32 セキュリティは?
  • 33. ® © 2015 MapR Technologies 33 Drill View を介した粒粒度度の細かいセキュリティ Name City State Credit Card # Dave San Jose CA 1374-7914-3865-4817 John Boulder CO 1374-9735-1794-9711 Raw ファイル (/raw/cards.csv) オーナー Admins パーミッション   Admins ビジネスアナリスト データサイエンティスト Name City State Credit Card # Dave San Jose CA 1374-1111-1111-1111 John Boulder CO 1374-1111-1111-1111 データサイエンティスト  View (/views/maskedcards.csv) 物理理データコピーではない Name City State Dave San Jose CA John Boulder CO ビジネスアナリスト  View オーナー Admins パーミッション Business Analysts オーナー Admins パーミッション Data Scientists
  • 34. ® © 2015 MapR Technologies 34 拡張性
  • 35. ® © 2015 MapR Technologies 35 Apache Drill の拡張 •  ファイルフォーマット –  ORC –  XML –  ... •  データソース –  NoSQL データベース –  検索索エンジン –  REST –  ... •  カスタム関数
  • 36. ® © 2015 MapR Technologies 36 Drill  を始める際のおすすめ •  Drill 初⼼心者は? –  無料料の  MapR オンライントレーニング –  AWS のクラウド上の  Test Drive Drill –  MapR Sandbox を利利⽤用した Drill with Hadoop の学習 •  データを分析してみたい⼈人は? –  デスクトップ PC で「Apache Drill in 10 mins」ガイドを試す –  Drill をクラスタにダウンロードしてデータ探索索を始める –  幅広いチュートリアルとドキュメント •  質問は –  user@drill.apache.org –  dev@drill.apache.org
  • 37. ® © 2015 MapR Technologies 37
  • 38. ® © 2015 MapR Technologies 38 Q&A @mapr_japan maprjapan sales-jp@mapr.com お問い合わせはこちらまで MapR maprtech mapr-technologies