SlideShare a Scribd company logo
®
© 2014 MapR Technologies 1
®
© 2014 MapR Technologies
Apache Drill を利用した実データの分析
Tomer Shiran
VP Product Management, MapR Technologies
Co-Founder, PMC Member and Committer, Apache Drill
2014年 11 月 20 日
®
© 2014 MapR Technologies 2
データのサイズは2年で
倍のペースで増えている
®
© 2014 MapR Technologies 3
44 ゼッタバイト
4.4 ゼッタバイト
2011 2013
1.8 ゼッタバイト
IDC による予測では 2020年
に世界全体のデータ量は
44 ゼッタバイト に達する
2020
出典: IDC Digital Universe
®
© 2014 MapR Technologies 4
非構造化データ
構造化データ
1980 2000 20101990 2020
非構造化データ の割合は
企業や組織が集めたデータ
の 80%以上 に増大する
出典: Human-Computer Interaction & Knowledge Discovery in Complex Unstructured, Big Data
合計格納データサイズ
®
© 2014 MapR Technologies 5
1980 2000 20101990 2020
固定スキーマ
DB管理者が構造を管理
動的スキーマ(スキーマフリー)
アプリケーションが構造を管理
「非スキーマ」データストアリレーショナルデータベース
MB〜GB TB〜PBサイズ
データベース
非スキーマデータストアがこのデータをとらえつつある
構造
開発スタイル
構造化 構造化、半構造化、非構造化
計画的(リリースサイクル: 数ヶ月〜数年) 反復的(リリースサイクル: 数日〜数週)
®
© 2014 MapR Technologies 6
ビッグデータの世界の SQL
•  SQL
•  BI(Tableau、MicroStrategy など)
•  低レイテンシ
•  スケーラビリティ
•  データストア上のスキーマの作成や
管理:
–  HDFS(Parquet、JSON など)
–  HBase
–  MongoDB
•  データの変換や複製
2 DON’T WANTWANT
非スキーマデータストアの柔軟性や機敏さ に関する
妥協をすることなく SQL および BI への対応をしたい
®
© 2014 MapR Technologies 7
• Hadoop/NoSQL 向けスキーマフリーのスケールアウトクエリエンジン
• クエリを実行するだけ vs スキーマ中心
• 低レイテンシ
• 使いやすさ
• 業界標準 API: ANSI SQL、ODBC/JDBC、RESTful API
40 以上のコントリビュータ
150 年以上のデータベースおよび

分散システムの開発経験	
APACHE DRILL
®
© 2014 MapR Technologies 8
セルフサービスデータ探索に向けた進化
データモデリング
および変換	
データビジュア

ライゼーション	
IT部門主導	
IT部門主導	
IT部門主導	
セルフサービス	
IT部門主導	
セルフサービス	
不要
セルフサービス	
RDBMSを使った

従来のBI
RDBMSを使った

セルフサービスBI
SQL-on-Hadoop
セルフサービス
データ探索	
ゼロデイ・アナリティクス
®
© 2014 MapR Technologies 9
®
© 2014 MapR Technologies 10
Drill のデータモデルはフレキシブル
HBase
JSON
BSON
CSV
TSV
Parquet
Avro
スキーマレス固定スキーマ
フラット
複雑
柔軟性
柔軟性
名前! 性別! 年齢!
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 テーブル
®
© 2014 MapR Technologies 11
Drill は 動的なスキーマディスカバリ をサポート
•  固定スキーマ	
•  中央管理されたレポジトリのスキー
マを利用 (Hive メタストア)
•  固定スキーマ、変化するスキーマ、
もしくはスキーマレス	
•  中央管理されたレポジトリのスキーマ、
自己記述型データのスキーマを利用	
2
SCHEMA ON
WRITE
SCHEMA
BEFORE READ
SCHEMA ON THE
FLY
事前にスキーマを宣言	
 動的にスキーマを発見
®
© 2014 MapR Technologies 12
ネイティブ JSON
SELECT	
  json_value(po_document,	
  
	
  	
  '$.AllowPartialShipment’	
  RETURNING	
  NUMBER)	
  
FROM	
  	
  	
  j_purchaseorder;	
  
SELECT	
  po_document.AllowPartialShipment	
  	
  
FROM	
  	
  	
  j_purchaseorder;	
  
Oracle の JSON クエリ:
Drill のJSON クエリ:
リレーショナルデータベースはスキーマフリーな JSON にきちんと対応できない
®
© 2014 MapR Technologies 13© 2014 MapR Technologies ®
アーキテクチャ
®
© 2014 MapR Technologies 14
アーキテクチャの概要
•  コモディティサーバのクラスタ
–  各ノード上でデーモン (drillbit) が動作
•  他の実行エンジンには非依存(MapReduce、Spark、Tez)
–  より優れた性能と管理性
•  ZooKeeper が逐一変化するクラスタのメンバーシップ情報を管理
–  drillbit は ZooKeeper を利用してクラスタ内の他の drillbit を見つける
–  クライアントは ZooKeeper を利用して drillbit を見つける
•  データ処理単位は カラムナレコードバッチ	
  
–  性能への影響を最小限に抑えつつスキーマの柔軟性を実現
®
© 2014 MapR Technologies 15
Drill はデータ局所性を最大限活用する
データソース ベストプラクティス
HDFS または MapR-FS 各 DataNode 上の drillbit がアクセス
HBase または MapR-DB 各 RegionServer 上の drillbit がアクセス
MongoDB 各 mongod 上の drillbit がアクセス(レプリカ使用時はレプリカノード上で稼働)
drillbit	
  
DataNode/
RegionServer/
mongod	
  
drillbit	
  
DataNode/
RegionServer/
mongod	
  
drillbit	
  
DataNode/
RegionServer/
mongod	
  
ZooKeeper
ZooKeeper
ZooKeeper
…
®
© 2014 MapR Technologies 16
SELECT* クエリ実行
drillbit	
  
ZooKeeper
クライアント
(JDBC, ODBC,
REST)
1.  drillbit を見つけ
る(セッションごと)
3.  論理および物理実行プランを作成
4.  クラスタに個別のフラグメントの実行を行わせる
(完全な分散実行)
ZooKeeper
ZooKeeper
drillbit	
  drillbit	
  
2.  drillbit	
  にク
エリを送信
5.  クライアントに
結果を返す
* CTAS (CREATE TABLE AS SELECT) クエリはステップ 1〜4 を含む
®
© 2014 MapR Technologies 17
drillbit 内部のコアモジュール	
  
SQL パーサ
Hive
HBase
分散キャッシュ
ストレージプラグイン
MongoDB
DFS
物理プラン
実行エンジン論理プラン オプティマイザ
RPC エンドポイント
®
© 2014 MapR Technologies 18© 2014 MapR Technologies ®
例: 実データの分析
®
© 2014 MapR Technologies 19
デモの概要
1.  Drill の起動
2.  DFS および MongoDB ストレージプラグインの設定
3.  データの探索
–  基本操作
–  複雑なデータ
–  ビュー
®
© 2014 MapR Technologies 20© 2014 MapR Technologies ®
Drill の起動
®
© 2014 MapR Technologies 21
Drill を組み込みモードで起動(sqlline)
$	
  tar	
  xf	
  apache-­‐drill-­‐0.7.0.tar.gz	
  
$	
  cd	
  apache-­‐drill-­‐0.7.0	
  
$	
  bin/sqlline	
  -­‐u	
  jdbc:drill:zk=local	
  
>	
  SELECT	
  *	
  
	
  	
  FROM	
  dfs.root.`/Users/tshiran/Development/demo/data/yelp/user.json`	
  
	
  	
  LIMIT	
  1;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  yelping_since	
  |	
  	
  	
  votes	
  	
  	
  	
  |	
  review_count	
  |	
  	
  	
  	
  name	
  	
  	
  	
  |	
  	
  user_id	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  2012-­‐02	
  	
  	
  	
  	
  	
  	
  |	
  {"funny":1,"useful":5,"cool":0}	
  |	
  6	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Lee	
  	
  	
  	
  	
  	
  	
  	
  |	
  
qtrmBGNqCvupHMHL_bKFgQ	
  |	
  
•  drillbit(Drill デーモン)が組み込みモードで自動的に起動する
•  組み込みモードでは ZooKeeper は不要(したがって zk=local)
•  組み込みモードでは BI クライアント(JDBC/ODBC)は使用できない
Web UI にアクセスが可能になる:
http://localhost:8047
®
© 2014 MapR Technologies 22
または Run Drill を分散モードで起動…
$	
  zkServer	
  start	
  
•  ZooKeeper(zkServer)を稼働させる:
•  Web UI にアクセス: http://localhost:8047
•  クライアントからクラスタに接続(sqlline を使用):
•  クライアント(例: sqlline) は ZooKeeper に接続してクラスタノードを見つける
•  1つの ZooKeeper のセットに 複数の Drill クラスタが登録されている場合には、JDBC 接続文字列
の中で希望のクラスタを指定する: jdbc:drill:zk=localhost:2181/drill/<クラスタ名>
•  ZooKeeper の稼働状態が不明の場合 telnet	
  localhost	
  2181 を実行して接続できるか確認
•  conf/drill-­‐override.conf 内で Drill クラスタ名と ZooKeeper ノードを定義
•  drillbit を起動:	
  
$	
  bin/drillbit.sh	
  start	
  
$	
  bin/sqlline	
  -­‐u	
  jdbc:drill:zk=localhost:2181	
  
®
© 2014 MapR Technologies 23© 2014 MapR Technologies ®
ストレージプラグインの設定
®
© 2014 MapR Technologies 24
MongoDB ストレージプラグインを有効化
®
© 2014 MapR Technologies 25
DFS ストレージプラグインでワークスペースを定義
•  d
®
© 2014 MapR Technologies 26© 2014 MapR Technologies ®
データの探索: 基本操作
®
© 2014 MapR Technologies 27
データ: DFS ファイル
{	
  
	
  	
  "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"	
  
}	
  
®
© 2014 MapR Technologies 28
データ: MongoDB コレクション
$	
  mongo	
  
MongoDB	
  shell	
  version:	
  2.6.5	
  
>	
  show	
  databases;	
  
admin	
  	
  (empty)	
  
local	
  	
  0.078GB	
  
yelp	
  	
  	
  0.453GB	
  
>	
  use	
  yelp	
  
>	
  db.users.findOne()	
  
{	
  
	
  "_id"	
  :	
  ObjectId("54566cdf3237149de181a92a"),	
  
	
  "yelping_since"	
  :	
  "2012-­‐02",	
  
	
  "votes"	
  :	
  {	
  
	
   	
  "funny"	
  :	
  1,	
  
	
   	
  "useful"	
  :	
  5,	
  
	
   	
  "cool"	
  :	
  0	
  
	
  },	
  
	
  "review_count"	
  :	
  6,	
  
	
  "name"	
  :	
  "Lee",	
  
	
  "user_id"	
  :	
  "qtrmBGNqCvupHMHL_bKFgQ",	
  
	
  "friends"	
  :	
  [	
  ]	
  
}	
  
®
© 2014 MapR Technologies 29
やってみましょう
>	
  SELECT	
  *	
  
	
  	
  FROM	
  dfs.root.`/Users/tshiran/Development/
demo/data/yelp/review.json`	
  
	
  	
  WHERE	
  stars	
  =	
  1	
  
	
  	
  LIMIT	
  1;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  votes	
  	
  	
  	
  |	
  	
  user_id	
  	
  	
  |	
  review_id	
  	
  |	
  	
  	
  stars	
  	
  	
  	
  |	
  	
  	
  	
  date	
  	
  	
  	
  |	
  	
  	
  	
  text	
  	
  	
  	
  |	
  	
  	
  	
  type	
  	
  	
  	
  |	
  business_id	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  {"funny":0,"useful":0,"cool":0}	
  |	
  Qrs3EICADUKNFoUq2iHStA	
  |	
  _ePLBPrkrf4bhyiKWEn4Qg	
  |	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  2013-­‐04-­‐19	
  
|	
  I	
  don't	
  know	
  what	
  Dr.	
  Goldberg	
  was	
  like	
  before	
  	
  moving	
  to	
  Arizona,	
  but	
  let	
  me	
  tell	
  you,	
  STAY	
  AWAY	
  from	
  this	
  
doctor	
  and	
  this	
  office.	
  |	
  review	
  	
  	
  	
  	
  |	
  vcNAWiLM4dR7D2nwwJ7nCA	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 30
ストレージプラグインの利用とワークスペース
>	
  SELECT	
  *	
  FROM	
  dfs.root.`/Users/tshiran/Development/demo/data/
yelp/review.json`	
  LIMIT	
  1;	
  
>	
  SELECT	
  *	
  FROM	
  dfs.demo.`yelp/review.json`	
  LIMIT	
  1;	
  
>	
  SELECT	
  *	
  FROM	
  mongo.yelp.users	
  LIMIT	
  1;	
  
>	
  USE	
  mongo.yelp;	
  
>	
  SELECT	
  *	
  FROM	
  users	
  LIMIT	
  1;	
  
ストレージプラグイン
ワークスペース
ワークスペースからの相対パス
ストレージプラグイン ワークスペース テーブル
dfs パス ワークスペースからの相対パス
mongo データベース コレクション
hive データベース テーブル
hbase ネームスペース テーブル
®
© 2014 MapR Technologies 31
最も多いユーザ名(MongoDB)
>	
  SELECT	
  name,	
  count(*)	
  AS	
  users	
  
	
  	
  FROM	
  mongo.yelp.users	
  
	
  	
  GROUP	
  BY	
  name	
  
	
  	
  ORDER	
  BY	
  users	
  DESC	
  LIMIT	
  10;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  	
  	
  users	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  David	
  	
  	
  	
  	
  	
  |	
  2453	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  John	
  	
  	
  	
  	
  	
  	
  |	
  2378	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Michael	
  	
  	
  	
  |	
  2322	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Chris	
  	
  	
  	
  	
  	
  |	
  2202	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Mike	
  	
  	
  	
  	
  	
  	
  |	
  2037	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Jennifer	
  	
  	
  |	
  1867	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Jessica	
  	
  	
  	
  |	
  1463	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Jason	
  	
  	
  	
  	
  	
  |	
  1457	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Michelle	
  	
  	
  |	
  1439	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Brian	
  	
  	
  	
  	
  	
  |	
  1436	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 32
最も店舗が多い都市
>	
  SELECT	
  state,	
  city,	
  count(*)	
  AS	
  businesses	
  
	
  	
  FROM	
  dfs.demo.`/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	
  	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 33© 2014 MapR Technologies ®
データの探索:複雑なデータ
®
© 2014 MapR Technologies 34
business.json (1)
{	
  
	
  "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,	
  
®
© 2014 MapR Technologies 35
business.json (2)
	
  "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},	
  
	
  }	
  
}	
  
®
© 2014 MapR Technologies 36
今どの店舗が開いてる(22:00)?
>	
  SELECT	
  name,	
  b.hours	
  
	
  	
  FROM	
  dfs.demo.`yelp/business.json`	
  b	
  
	
  	
  WHERE	
  b.hours.Saturday.`open`	
  <	
  '22:00'	
  AND	
  
	
  	
  	
  	
  	
  	
  	
  	
  b.hours.Saturday.`close`	
  >	
  '22:00'	
  
	
  	
  LIMIT	
  2;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  	
  	
  hours	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Chang	
  Jiang	
  Chinese	
  Kitchen	
  |	
  {"Tuesday":{"close":"22:00","open":"11:00"},"Friday":
{"close":"22:30","open":"11:00"},"Monday":{"close":"22:00","open":"11:00"},"Wednesday":
{"close":"22:00","open":"11:00"},"Thursday":{"close":"22:00","open":"11:00"},"Sunday":
{"close":"21:00","open":"16:00"},"Saturday":{"close":"22:30","open":"11:00"}}	
  |	
  
|	
  Grand	
  China	
  Restaurant	
  |	
  {"Tuesday":{"close":"22:00","open":"11:00"},"Friday":
{"close":"23:00","open":"11:00"},"Monday":{"close":"22:00","open":"11:00"},"Wednesday":
{"close":"22:00","open":"11:00"},"Thursday":{"close":"22:00","open":"11:00"},"Sunday":
{"close":"22:00","open":"12:00"},"Saturday":{"close":"23:00","open":"11:00"}}	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 37
午後10時のラスベガス、おいしい中東料理が食べたい
>	
  SELECT	
  name,	
  stars,	
  b.hours.Friday,	
  categories	
  
	
  	
  FROM	
  dfs.demo.`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	
  	
  	
  	
  |	
  	
  	
  EXPR$2	
  	
  	
  |	
  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"]	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 38
繰り返しの値のフラット化
>	
  SELECT	
  name,	
  categories	
  
	
  	
  FROM	
  dfs.demo.`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.demo.`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	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 39
最も多い店舗カテゴリと最も少ない店舗カテゴリ
>	
  SELECT	
  category,	
  count(*)	
  AS	
  businesses	
  
	
  	
  FROM	
  (SELECT	
  name,	
  FLATTEN(categories)	
  AS	
  category	
  
	
  	
  	
  	
  	
  	
  	
  	
  FROM	
  dfs.demo.`yelp/business.json`)	
  c	
  
	
  	
  GROUP	
  BY	
  category	
  ORDER	
  BY	
  businesses	
  DESC;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  category	
  	
  |	
  businesses	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Restaurants	
  |	
  14303	
  	
  	
  	
  	
  	
  |	
  
…	
  
|	
  Australian	
  |	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Boat	
  Dealers	
  |	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Firewood	
  	
  	
  |	
  1	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
715	
  rows	
  selected	
  (3.439	
  seconds)	
  
>	
  SELECT	
  name,	
  categories	
  FROM	
  dfs.demo.`yelp/business.json`	
  
WHERE	
  true	
  and	
  REPEATED_CONTAINS(categories,	
  'Australian');	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  categories	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  The	
  Australian	
  AZ	
  |	
  ["Bars","Burgers","Nightlife","Australian","Sports	
  Bars","Restaurants"]	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 40© 2014 MapR Technologies ®
データの探索: ビュー
®
© 2014 MapR Technologies 41
名前-性別マッピングのビューの作成
>	
  CREATE	
  VIEW	
  dfs.tmp.`names`	
  AS	
  
	
  	
  	
  	
  SELECT	
  columns[0]	
  AS	
  name,	
  columns[4]	
  AS	
  gender	
  
	
  	
  	
  	
  FROM	
  dfs.demo.`names.csv`;	
  
>	
  USE	
  dfs.tmp;	
  
>	
  CREATE	
  VIEW	
  names1	
  ASSELECT	
  columns[0]	
  AS	
  name,	
  columns[4]	
  AS	
  gender	
  FROM	
  
dfs.demo.`names.csv`;	
  
>	
  SELECT	
  *	
  FROM	
  dfs.tmp.names	
  WHERE	
  name	
  =	
  'John';	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  	
  	
  gender	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  John	
  	
  	
  	
  	
  	
  	
  |	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
columns[0]	
   columns[4]	
  
names.csv:	
  
®
© 2014 MapR Technologies 42
Yelp 内で最も多い名前(と性別)
>	
  SELECT	
  u.name,	
  n.gender,	
  count(*)	
  AS	
  number	
  
	
  	
  FROM	
  mongo.yelp.users	
  u,	
  dfs.tmp.names	
  n	
  
	
  	
  WHERE	
  u.name	
  =	
  n.name	
  
	
  	
  GROUP	
  BY	
  u.name,	
  n.gender	
  
	
  	
  ORDER	
  BY	
  number	
  DESC	
  LIMIT	
  10;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  	
  name	
  	
  	
  	
  |	
  	
  	
  gender	
  	
  	
  |	
  	
  	
  number	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  David	
  	
  	
  	
  	
  	
  |	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  2453	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  John	
  	
  	
  	
  	
  	
  	
  |	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  2378	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Michael	
  	
  	
  	
  |	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  2322	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Chris	
  	
  	
  	
  	
  	
  |	
  Unknown	
  	
  	
  	
  |	
  2202	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Mike	
  	
  	
  	
  	
  	
  	
  |	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  2037	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Jennifer	
  	
  	
  |	
  Female	
  	
  	
  	
  	
  |	
  1867	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Jessica	
  	
  	
  	
  |	
  Female	
  	
  	
  	
  	
  |	
  1463	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Jason	
  	
  	
  	
  	
  	
  |	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  1457	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Michelle	
  	
  	
  |	
  Female	
  	
  	
  	
  	
  |	
  1439	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Brian	
  	
  	
  	
  	
  	
  |	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  1436	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 43
誰がより高い評価をしているか – 男性 or 女性?
>	
  SELECT	
  n.gender,	
  count(*)	
  AS	
  users,	
  round(avg(average_stars),	
  2)	
  stars	
  
	
  	
  FROM	
  mongo.yelp.users	
  u,	
  dfs.tmp.names	
  n	
  
	
  	
  WHERE	
  u.name	
  =	
  n.name	
  
	
  	
  GROUP	
  BY	
  n.gender;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  gender	
  	
  	
  |	
  	
  	
  users	
  	
  	
  	
  |	
  	
  	
  stars	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Female	
  	
  	
  	
  	
  |	
  103684	
  	
  	
  	
  	
  |	
  3.77	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  97430	
  	
  	
  	
  	
  	
  |	
  3.696	
  	
  	
  	
  	
  	
  |	
  
|	
  Unknown	
  	
  	
  	
  |	
  18409	
  	
  	
  	
  	
  	
  |	
  3.727	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
®
© 2014 MapR Technologies 44
誰がよくレビューを書いているか – 男性 or 女性?
>	
  SELECT	
  n.gender,	
  round(avg(length(r.text)))	
  AS	
  review_length	
  
	
  	
  FROM	
  dfs.demo.`yelp/review.json`	
  r,	
  
	
  	
  	
  	
  	
  	
  	
  mongo.yelp.users	
  u,	
  
	
  	
  	
  	
  	
  	
  	
  dfs.tmp.names	
  n	
  
	
  	
  WHERE	
  u.name	
  =	
  n.name	
  AND	
  r.user_id	
  =	
  u.user_id	
  
	
  	
  GROUP	
  BY	
  n.gender;	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  	
  	
  gender	
  	
  	
  |	
  review_length	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
|	
  Male	
  	
  	
  	
  	
  	
  	
  |	
  665	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Female	
  	
  	
  	
  	
  |	
  730	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
|	
  Unknown	
  	
  	
  	
  |	
  711	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+	
  
3つのジョインを行い見つける…
®
© 2014 MapR Technologies 45
Drill ツイート(@ApacheDrill)
®
© 2014 MapR Technologies 46
ありがとうございました
•  もっと知るには: incubator.apache.org/drill/
•  ダウンロード: incubator.apache.org/drill/download/
•  ご質問は: drill-user@incubator.apache.org
•  連絡先: tshiran@apache.org
®
© 2014 MapR Technologies 47
Thank You
@mapr maprtech
tshiran@mapr.com
Tomer Shiran, VP Product Management
MapRTechnologies
maprtech
mapr-technologies

More Related Content

PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
PDF
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
PDF
ストリーム処理を支えるキューイングシステムの選び方
PDF
Dockerからcontainerdへの移行
PDF
DockerとPodmanの比較
PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
ストリーム処理を支えるキューイングシステムの選び方
Dockerからcontainerdへの移行
DockerとPodmanの比較
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...

What's hot (20)

PPTX
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
PDF
Hadoopの概念と基本的知識
PPTX
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PDF
Magnum IO GPUDirect Storage 最新情報
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
PDF
Javaのログ出力: 道具と考え方
PPTX
MongoDBが遅いときの切り分け方法
PDF
Webアプリを並行開発する際のマイグレーション戦略
PDF
TripleO Deep Dive 1.1
PDF
分散トレーシング技術について(Open tracingやjaeger)
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PDF
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送
PDF
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
PPT
インフラエンジニアのためのcassandra入門
PDF
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Hadoopの概念と基本的知識
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
Docker道場オンライン#1 Docker基礎概念と用語の理解
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
Magnum IO GPUDirect Storage 最新情報
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
コンテナの作り方「Dockerは裏方で何をしているのか?」
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
Javaのログ出力: 道具と考え方
MongoDBが遅いときの切り分け方法
Webアプリを並行開発する際のマイグレーション戦略
TripleO Deep Dive 1.1
分散トレーシング技術について(Open tracingやjaeger)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
[Cloud OnAir] オンプレミスにあるデータを GCP で分析する前に知っておきたいアーキテクチャ 2019年5月30日 放送
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
インフラエンジニアのためのcassandra入門
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
Ad

Similar to Apache Drill を利用した実データの分析 (20)

PDF
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
PDF
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
PDF
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
PDF
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
PDF
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
PPTX
ビッグデータ&データマネジメント展
PDF
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
PPTX
ビッグデータ活用支援フォーラム
PPTX
WebDB Forum 2012 基調講演資料
PDF
Treasure Dataを支える技術 - MessagePack編
PDF
Spark徹底入門 #cwt2015
PDF
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
PPTX
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
PDF
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
PDF
D3.jsを使ったデータビジュアライズ勉強会
PPTX
Hadoopソースコードリーディング8/MapRを使ってみた
PPTX
HDFS Supportaiblity Improvements
PDF
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
PDF
Dapr on Kubernetes
KEY
Web Operations and Perl kansai.pm#14
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
ビッグデータ&データマネジメント展
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
ビッグデータ活用支援フォーラム
WebDB Forum 2012 基調講演資料
Treasure Dataを支える技術 - MessagePack編
Spark徹底入門 #cwt2015
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
D3.jsを使ったデータビジュアライズ勉強会
Hadoopソースコードリーディング8/MapRを使ってみた
HDFS Supportaiblity Improvements
夏サミ2013 Hadoopを使わない独自の分散処理環境の構築とその運用
Dapr on Kubernetes
Web Operations and Perl kansai.pm#14
Ad

More from MapR Technologies Japan (20)

PDF
Fast Data を扱うためのデザインパターン
PDF
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
PDF
Drill超簡単チューニング
PDF
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
PDF
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
PDF
MapR Streams & MapR コンバージド・データ・プラットフォーム
PDF
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
PPTX
Apache Drill で日本語を扱ってみよう + オープンデータ解析
PDF
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
PDF
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
PDF
Hadoop によるゲノム解読
PDF
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
PDF
異常検知 - 何を探すかよく分かっていないものを見つける方法
PDF
時系列の世界の時系列データ
PDF
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
PDF
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
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
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
Fast Data を扱うためのデザインパターン
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
Drill超簡単チューニング
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
MapR Streams & MapR コンバージド・データ・プラットフォーム
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
Hadoop によるゲノム解読
事例から見るNoSQLの使い方 - db tech showcase Tokyo 2015 2015/06/11
異常検知 - 何を探すかよく分かっていないものを見つける方法
時系列の世界の時系列データ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
実践機械学習 — MahoutとSolrを活用したレコメンデーションにおけるイノベーション - 2014/07/08 Hadoop Conference ...
マップアールが考える企業システムにおける分析プラットフォームの進化 - 2014/06/27 Data Scientist Summit 2014
エンタープライズ NoSQL/HBase プラットフォーム – MapR M7 エディション - db tech showcase 大阪 2014 201...
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19

Recently uploaded (9)

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

Apache Drill を利用した実データの分析

  • 1. ® © 2014 MapR Technologies 1 ® © 2014 MapR Technologies Apache Drill を利用した実データの分析 Tomer Shiran VP Product Management, MapR Technologies Co-Founder, PMC Member and Committer, Apache Drill 2014年 11 月 20 日
  • 2. ® © 2014 MapR Technologies 2 データのサイズは2年で 倍のペースで増えている
  • 3. ® © 2014 MapR Technologies 3 44 ゼッタバイト 4.4 ゼッタバイト 2011 2013 1.8 ゼッタバイト IDC による予測では 2020年 に世界全体のデータ量は 44 ゼッタバイト に達する 2020 出典: IDC Digital Universe
  • 4. ® © 2014 MapR Technologies 4 非構造化データ 構造化データ 1980 2000 20101990 2020 非構造化データ の割合は 企業や組織が集めたデータ の 80%以上 に増大する 出典: Human-Computer Interaction & Knowledge Discovery in Complex Unstructured, Big Data 合計格納データサイズ
  • 5. ® © 2014 MapR Technologies 5 1980 2000 20101990 2020 固定スキーマ DB管理者が構造を管理 動的スキーマ(スキーマフリー) アプリケーションが構造を管理 「非スキーマ」データストアリレーショナルデータベース MB〜GB TB〜PBサイズ データベース 非スキーマデータストアがこのデータをとらえつつある 構造 開発スタイル 構造化 構造化、半構造化、非構造化 計画的(リリースサイクル: 数ヶ月〜数年) 反復的(リリースサイクル: 数日〜数週)
  • 6. ® © 2014 MapR Technologies 6 ビッグデータの世界の SQL •  SQL •  BI(Tableau、MicroStrategy など) •  低レイテンシ •  スケーラビリティ •  データストア上のスキーマの作成や 管理: –  HDFS(Parquet、JSON など) –  HBase –  MongoDB •  データの変換や複製 2 DON’T WANTWANT 非スキーマデータストアの柔軟性や機敏さ に関する 妥協をすることなく SQL および BI への対応をしたい
  • 7. ® © 2014 MapR Technologies 7 • Hadoop/NoSQL 向けスキーマフリーのスケールアウトクエリエンジン • クエリを実行するだけ vs スキーマ中心 • 低レイテンシ • 使いやすさ • 業界標準 API: ANSI SQL、ODBC/JDBC、RESTful API 40 以上のコントリビュータ 150 年以上のデータベースおよび
 分散システムの開発経験 APACHE DRILL
  • 8. ® © 2014 MapR Technologies 8 セルフサービスデータ探索に向けた進化 データモデリング および変換 データビジュア
 ライゼーション IT部門主導 IT部門主導 IT部門主導 セルフサービス IT部門主導 セルフサービス 不要 セルフサービス RDBMSを使った
 従来のBI RDBMSを使った
 セルフサービスBI SQL-on-Hadoop セルフサービス データ探索 ゼロデイ・アナリティクス
  • 9. ® © 2014 MapR Technologies 9
  • 10. ® © 2014 MapR Technologies 10 Drill のデータモデルはフレキシブル HBase JSON BSON CSV TSV Parquet Avro スキーマレス固定スキーマ フラット 複雑 柔軟性 柔軟性 名前! 性別! 年齢! 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 テーブル
  • 11. ® © 2014 MapR Technologies 11 Drill は 動的なスキーマディスカバリ をサポート •  固定スキーマ •  中央管理されたレポジトリのスキー マを利用 (Hive メタストア) •  固定スキーマ、変化するスキーマ、 もしくはスキーマレス •  中央管理されたレポジトリのスキーマ、 自己記述型データのスキーマを利用 2 SCHEMA ON WRITE SCHEMA BEFORE READ SCHEMA ON THE FLY 事前にスキーマを宣言 動的にスキーマを発見
  • 12. ® © 2014 MapR Technologies 12 ネイティブ JSON SELECT  json_value(po_document,      '$.AllowPartialShipment’  RETURNING  NUMBER)   FROM      j_purchaseorder;   SELECT  po_document.AllowPartialShipment     FROM      j_purchaseorder;   Oracle の JSON クエリ: Drill のJSON クエリ: リレーショナルデータベースはスキーマフリーな JSON にきちんと対応できない
  • 13. ® © 2014 MapR Technologies 13© 2014 MapR Technologies ® アーキテクチャ
  • 14. ® © 2014 MapR Technologies 14 アーキテクチャの概要 •  コモディティサーバのクラスタ –  各ノード上でデーモン (drillbit) が動作 •  他の実行エンジンには非依存(MapReduce、Spark、Tez) –  より優れた性能と管理性 •  ZooKeeper が逐一変化するクラスタのメンバーシップ情報を管理 –  drillbit は ZooKeeper を利用してクラスタ内の他の drillbit を見つける –  クライアントは ZooKeeper を利用して drillbit を見つける •  データ処理単位は カラムナレコードバッチ   –  性能への影響を最小限に抑えつつスキーマの柔軟性を実現
  • 15. ® © 2014 MapR Technologies 15 Drill はデータ局所性を最大限活用する データソース ベストプラクティス HDFS または MapR-FS 各 DataNode 上の drillbit がアクセス HBase または MapR-DB 各 RegionServer 上の drillbit がアクセス MongoDB 各 mongod 上の drillbit がアクセス(レプリカ使用時はレプリカノード上で稼働) drillbit   DataNode/ RegionServer/ mongod   drillbit   DataNode/ RegionServer/ mongod   drillbit   DataNode/ RegionServer/ mongod   ZooKeeper ZooKeeper ZooKeeper …
  • 16. ® © 2014 MapR Technologies 16 SELECT* クエリ実行 drillbit   ZooKeeper クライアント (JDBC, ODBC, REST) 1.  drillbit を見つけ る(セッションごと) 3.  論理および物理実行プランを作成 4.  クラスタに個別のフラグメントの実行を行わせる (完全な分散実行) ZooKeeper ZooKeeper drillbit  drillbit   2.  drillbit  にク エリを送信 5.  クライアントに 結果を返す * CTAS (CREATE TABLE AS SELECT) クエリはステップ 1〜4 を含む
  • 17. ® © 2014 MapR Technologies 17 drillbit 内部のコアモジュール   SQL パーサ Hive HBase 分散キャッシュ ストレージプラグイン MongoDB DFS 物理プラン 実行エンジン論理プラン オプティマイザ RPC エンドポイント
  • 18. ® © 2014 MapR Technologies 18© 2014 MapR Technologies ® 例: 実データの分析
  • 19. ® © 2014 MapR Technologies 19 デモの概要 1.  Drill の起動 2.  DFS および MongoDB ストレージプラグインの設定 3.  データの探索 –  基本操作 –  複雑なデータ –  ビュー
  • 20. ® © 2014 MapR Technologies 20© 2014 MapR Technologies ® Drill の起動
  • 21. ® © 2014 MapR Technologies 21 Drill を組み込みモードで起動(sqlline) $  tar  xf  apache-­‐drill-­‐0.7.0.tar.gz   $  cd  apache-­‐drill-­‐0.7.0   $  bin/sqlline  -­‐u  jdbc:drill:zk=local   >  SELECT  *      FROM  dfs.root.`/Users/tshiran/Development/demo/data/yelp/user.json`      LIMIT  1;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  yelping_since  |      votes        |  review_count  |        name        |    user_id      |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  2012-­‐02              |  {"funny":1,"useful":5,"cool":0}  |  6                        |  Lee                |   qtrmBGNqCvupHMHL_bKFgQ  |   •  drillbit(Drill デーモン)が組み込みモードで自動的に起動する •  組み込みモードでは ZooKeeper は不要(したがって zk=local) •  組み込みモードでは BI クライアント(JDBC/ODBC)は使用できない Web UI にアクセスが可能になる: http://localhost:8047
  • 22. ® © 2014 MapR Technologies 22 または Run Drill を分散モードで起動… $  zkServer  start   •  ZooKeeper(zkServer)を稼働させる: •  Web UI にアクセス: http://localhost:8047 •  クライアントからクラスタに接続(sqlline を使用): •  クライアント(例: sqlline) は ZooKeeper に接続してクラスタノードを見つける •  1つの ZooKeeper のセットに 複数の Drill クラスタが登録されている場合には、JDBC 接続文字列 の中で希望のクラスタを指定する: jdbc:drill:zk=localhost:2181/drill/<クラスタ名> •  ZooKeeper の稼働状態が不明の場合 telnet  localhost  2181 を実行して接続できるか確認 •  conf/drill-­‐override.conf 内で Drill クラスタ名と ZooKeeper ノードを定義 •  drillbit を起動:   $  bin/drillbit.sh  start   $  bin/sqlline  -­‐u  jdbc:drill:zk=localhost:2181  
  • 23. ® © 2014 MapR Technologies 23© 2014 MapR Technologies ® ストレージプラグインの設定
  • 24. ® © 2014 MapR Technologies 24 MongoDB ストレージプラグインを有効化
  • 25. ® © 2014 MapR Technologies 25 DFS ストレージプラグインでワークスペースを定義 •  d
  • 26. ® © 2014 MapR Technologies 26© 2014 MapR Technologies ® データの探索: 基本操作
  • 27. ® © 2014 MapR Technologies 27 データ: DFS ファイル {      "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"   }  
  • 28. ® © 2014 MapR Technologies 28 データ: MongoDB コレクション $  mongo   MongoDB  shell  version:  2.6.5   >  show  databases;   admin    (empty)   local    0.078GB   yelp      0.453GB   >  use  yelp   >  db.users.findOne()   {    "_id"  :  ObjectId("54566cdf3237149de181a92a"),    "yelping_since"  :  "2012-­‐02",    "votes"  :  {      "funny"  :  1,      "useful"  :  5,      "cool"  :  0    },    "review_count"  :  6,    "name"  :  "Lee",    "user_id"  :  "qtrmBGNqCvupHMHL_bKFgQ",    "friends"  :  [  ]   }  
  • 29. ® © 2014 MapR Technologies 29 やってみましょう >  SELECT  *      FROM  dfs.root.`/Users/tshiran/Development/ demo/data/yelp/review.json`      WHERE  stars  =  1      LIMIT  1;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |      votes        |    user_id      |  review_id    |      stars        |        date        |        text        |        type        |  business_id  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  {"funny":0,"useful":0,"cool":0}  |  Qrs3EICADUKNFoUq2iHStA  |  _ePLBPrkrf4bhyiKWEn4Qg  |  1                    |  2013-­‐04-­‐19   |  I  don't  know  what  Dr.  Goldberg  was  like  before    moving  to  Arizona,  but  let  me  tell  you,  STAY  AWAY  from  this   doctor  and  this  office.  |  review          |  vcNAWiLM4dR7D2nwwJ7nCA  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 30. ® © 2014 MapR Technologies 30 ストレージプラグインの利用とワークスペース >  SELECT  *  FROM  dfs.root.`/Users/tshiran/Development/demo/data/ yelp/review.json`  LIMIT  1;   >  SELECT  *  FROM  dfs.demo.`yelp/review.json`  LIMIT  1;   >  SELECT  *  FROM  mongo.yelp.users  LIMIT  1;   >  USE  mongo.yelp;   >  SELECT  *  FROM  users  LIMIT  1;   ストレージプラグイン ワークスペース ワークスペースからの相対パス ストレージプラグイン ワークスペース テーブル dfs パス ワークスペースからの相対パス mongo データベース コレクション hive データベース テーブル hbase ネームスペース テーブル
  • 31. ® © 2014 MapR Technologies 31 最も多いユーザ名(MongoDB) >  SELECT  name,  count(*)  AS  users      FROM  mongo.yelp.users      GROUP  BY  name      ORDER  BY  users  DESC  LIMIT  10;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |      users        |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  David            |  2453              |   |  John              |  2378              |   |  Michael        |  2322              |   |  Chris            |  2202              |   |  Mike              |  2037              |   |  Jennifer      |  1867              |   |  Jessica        |  1463              |   |  Jason            |  1457              |   |  Michelle      |  1439              |   |  Brian            |  1436              |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 32. ® © 2014 MapR Technologies 32 最も店舗が多い都市 >  SELECT  state,  city,  count(*)  AS  businesses      FROM  dfs.demo.`/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                |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 33. ® © 2014 MapR Technologies 33© 2014 MapR Technologies ® データの探索:複雑なデータ
  • 34. ® © 2014 MapR Technologies 34 business.json (1) {    "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,  
  • 35. ® © 2014 MapR Technologies 35 business.json (2)  "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},    }   }  
  • 36. ® © 2014 MapR Technologies 36 今どの店舗が開いてる(22:00)? >  SELECT  name,  b.hours      FROM  dfs.demo.`yelp/business.json`  b      WHERE  b.hours.Saturday.`open`  <  '22:00'  AND                  b.hours.Saturday.`close`  >  '22:00'      LIMIT  2;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |      hours        |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Chang  Jiang  Chinese  Kitchen  |  {"Tuesday":{"close":"22:00","open":"11:00"},"Friday": {"close":"22:30","open":"11:00"},"Monday":{"close":"22:00","open":"11:00"},"Wednesday": {"close":"22:00","open":"11:00"},"Thursday":{"close":"22:00","open":"11:00"},"Sunday": {"close":"21:00","open":"16:00"},"Saturday":{"close":"22:30","open":"11:00"}}  |   |  Grand  China  Restaurant  |  {"Tuesday":{"close":"22:00","open":"11:00"},"Friday": {"close":"23:00","open":"11:00"},"Monday":{"close":"22:00","open":"11:00"},"Wednesday": {"close":"22:00","open":"11:00"},"Thursday":{"close":"22:00","open":"11:00"},"Sunday": {"close":"22:00","open":"12:00"},"Saturday":{"close":"23:00","open":"11:00"}}  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 37. ® © 2014 MapR Technologies 37 午後10時のラスベガス、おいしい中東料理が食べたい >  SELECT  name,  stars,  b.hours.Friday,  categories      FROM  dfs.demo.`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        |      EXPR$2      |  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"]  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 38. ® © 2014 MapR Technologies 38 繰り返しの値のフラット化 >  SELECT  name,  categories      FROM  dfs.demo.`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.demo.`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  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 39. ® © 2014 MapR Technologies 39 最も多い店舗カテゴリと最も少ない店舗カテゴリ >  SELECT  category,  count(*)  AS  businesses      FROM  (SELECT  name,  FLATTEN(categories)  AS  category                  FROM  dfs.demo.`yelp/business.json`)  c      GROUP  BY  category  ORDER  BY  businesses  DESC;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |    category    |  businesses  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Restaurants  |  14303            |   …   |  Australian  |  1                    |   |  Boat  Dealers  |  1                    |   |  Firewood      |  1                    |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   715  rows  selected  (3.439  seconds)   >  SELECT  name,  categories  FROM  dfs.demo.`yelp/business.json`   WHERE  true  and  REPEATED_CONTAINS(categories,  'Australian');   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |  categories  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  The  Australian  AZ  |  ["Bars","Burgers","Nightlife","Australian","Sports  Bars","Restaurants"]  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 40. ® © 2014 MapR Technologies 40© 2014 MapR Technologies ® データの探索: ビュー
  • 41. ® © 2014 MapR Technologies 41 名前-性別マッピングのビューの作成 >  CREATE  VIEW  dfs.tmp.`names`  AS          SELECT  columns[0]  AS  name,  columns[4]  AS  gender          FROM  dfs.demo.`names.csv`;   >  USE  dfs.tmp;   >  CREATE  VIEW  names1  ASSELECT  columns[0]  AS  name,  columns[4]  AS  gender  FROM   dfs.demo.`names.csv`;   >  SELECT  *  FROM  dfs.tmp.names  WHERE  name  =  'John';   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |      gender      |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  John              |  Male              |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   columns[0]   columns[4]   names.csv:  
  • 42. ® © 2014 MapR Technologies 42 Yelp 内で最も多い名前(と性別) >  SELECT  u.name,  n.gender,  count(*)  AS  number      FROM  mongo.yelp.users  u,  dfs.tmp.names  n      WHERE  u.name  =  n.name      GROUP  BY  u.name,  n.gender      ORDER  BY  number  DESC  LIMIT  10;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |        name        |      gender      |      number      |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  David            |  Male              |  2453              |   |  John              |  Male              |  2378              |   |  Michael        |  Male              |  2322              |   |  Chris            |  Unknown        |  2202              |   |  Mike              |  Male              |  2037              |   |  Jennifer      |  Female          |  1867              |   |  Jessica        |  Female          |  1463              |   |  Jason            |  Male              |  1457              |   |  Michelle      |  Female          |  1439              |   |  Brian            |  Male              |  1436              |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 43. ® © 2014 MapR Technologies 43 誰がより高い評価をしているか – 男性 or 女性? >  SELECT  n.gender,  count(*)  AS  users,  round(avg(average_stars),  2)  stars      FROM  mongo.yelp.users  u,  dfs.tmp.names  n      WHERE  u.name  =  n.name      GROUP  BY  n.gender;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |      gender      |      users        |      stars        |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Female          |  103684          |  3.77              |   |  Male              |  97430            |  3.696            |   |  Unknown        |  18409            |  3.727            |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+  
  • 44. ® © 2014 MapR Technologies 44 誰がよくレビューを書いているか – 男性 or 女性? >  SELECT  n.gender,  round(avg(length(r.text)))  AS  review_length      FROM  dfs.demo.`yelp/review.json`  r,                mongo.yelp.users  u,                dfs.tmp.names  n      WHERE  u.name  =  n.name  AND  r.user_id  =  u.user_id      GROUP  BY  n.gender;   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |      gender      |  review_length  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  Male              |  665                      |   |  Female          |  730                      |   |  Unknown        |  711                      |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   3つのジョインを行い見つける…
  • 45. ® © 2014 MapR Technologies 45 Drill ツイート(@ApacheDrill)
  • 46. ® © 2014 MapR Technologies 46 ありがとうございました •  もっと知るには: incubator.apache.org/drill/ •  ダウンロード: incubator.apache.org/drill/download/ •  ご質問は: drill-user@incubator.apache.org •  連絡先: tshiran@apache.org
  • 47. ® © 2014 MapR Technologies 47 Thank You @mapr maprtech tshiran@mapr.com Tomer Shiran, VP Product Management MapRTechnologies maprtech mapr-technologies