SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
®
© 2015 MapR Technologies 1
®
© 2015 MapR Technologies
Apache Drill でオープンデータを分析してみる
草薙  昭彦
MapR Technologies
2015 年年  9 ⽉月  11 ⽇日
®
© 2015 MapR Technologies 2
Apache Drill 1.0 リリース (5/19) http://drill.apache.org
®
© 2015 MapR Technologies 3
本⽇日のトピック
•  Apache Drill 概要
•  オープンデータを分析してみよう
®
© 2015 MapR Technologies 4© 2015 MapR Technologies
®
Apache Drill 概要
®
© 2015 MapR Technologies 5
⾮非構造化データ
構造化データ
1980 2000 20101990 2020
データは2年年で倍に増える
⾮非構造化データ  の割合は
企業や組織が集めたデータ
の  80%以上  に増⼤大する
出典: Human-Computer Interaction & Knowledge Discovery in Complex Unstructured, Big Data
合計格納データサイズ
®
© 2015 MapR Technologies 6
1980 2000 20101990 2020
固定スキーマ
DB管理理者が構造を管理理
動的/柔軟なスキーマ
アプリケーションが構造を管理理
⾮非リレーショナルデータベースリレーショナルデータベース
GB〜~TB TB〜~PBデータサイズ
データベース
データは⾮非リレーショナルデータストアに向かう
データ構造
開発スタイル
構造化 構造化、半構造化、⾮非構造化
計画的(リリースサイクル=数ヶ⽉月〜~数年年) 反復復的(リリースサイクル=数⽇日〜~数週間)
®
© 2015 MapR Technologies 7
⾮非構造化データの時代の  SQL とは?
SQL の使いやすさ NoSQL の柔軟性
•  SQL
•  BI (Tableau、MicroStrategy
など)
•  低レイテンシ
•  スケーラビリティ
•  スキーマ管理理なし
–  HDFS (Parquet、JSON など)
–  HBase
–  …
•  データ変換・複製なし
®
© 2015 MapR Technologies 8
Industry's First
Schema-free SQL engine
for Big Data
®
®
© 2015 MapR Technologies 9
セルフサービスからスキーマフリーへの拡張
迅速さ&ビジネス価値
BI のユースケース
IT部⾨門主導のBI
セルフサービス
BI
スキーマフリー
データ探索索
IT部⾨門主導のBI IT部⾨門主導のBI
セルフサービス
BI
IT 部⾨門への依存なしで
アナリストが主導
IT 部⾨門のETLの⽀支援を
受け、アナリストが主導
IT 部⾨門が作成する
レポート、スプレッドシート
1980年年代 -1990年年代 2000年年代 現在
®
© 2015 MapR Technologies 10
即時分析により「即断可能な」ビジネスを実現
Hadoop

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

データ
ユーザー
管理理された
アプローチ
探索索的な
アプローチ
新しいビジネスの問いかけソースデータの変更更
結果を得るまでの合計時間: 数週間から数ヶ⽉月
結果を得るまでの合計時間: 数分
®
© 2015 MapR Technologies 11
Drill は  動的なスキーマディスカバリ  をサポート
•  固定スキーマ
•  中央管理理されたレポジトリのスキー  
マを利利⽤用  (Hive メタストア)
•  固定スキーマ、変化するスキーマ、  
もしくはスキーマレス
•  中央管理理されたレポジトリのスキーマ、  
⾃自⼰己記述型データのスキーマを利利⽤用
2動的にスキーマを発⾒見見事前にスキーマを宣⾔言
SCHEMA ON
WRITE
SCHEMA
BEFORE READ
SCHEMA ON THE
FLY
®
© 2015 MapR Technologies 12
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 13
-  サブディレクトリ
-  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 14
アーキテクチャの概要
•  コモディティサーバのクラスタ
–  各ノード上でデーモン  (drillbit) が動作
•  他の実⾏行行エンジンには⾮非依存(MapReduce、Spark、Tez)
–  より優れた性能と管理理性
•  ZooKeeper が逐⼀一変化するクラスタのメンバーシップ情報を管理理
–  drillbit は  ZooKeeper を利利⽤用してクラスタ内の他の  drillbit を⾒見見つける
–  クライアントは  ZooKeeper を利利⽤用して  drillbit を⾒見見つける
•  データ処理理単位は  カラムナレコードバッチ	
  
–  性能への影響を最⼩小限に抑えつつスキーマの柔軟性を実現
®
© 2015 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
…
®
© 2015 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 を含む
®
© 2015 MapR Technologies 17
drillbit 内部のコアモジュール	
  
SQL パーサ
Hive
HBase
分散キャッシュ
ストレージプラグイン
MongoDB
DFS
物理理プラン
実⾏行行エンジン論論理理プラン オプティマイザ
RPC エンドポイント
®
© 2015 MapR Technologies 18© 2015 MapR Technologies
®
オープンデータを分析してみよう
®
© 2015 MapR Technologies 19
Drill で政府統計情報  (e-Stat) を分析してみよう
®
© 2015 MapR Technologies 20
Drill で政府統計情報  (e-Stat) を分析してみよう
政府統計情報 e-Stat を Apache Drill で分析してみる

http://nagix.hatenablog.com/entry/2015/05/21/232526
®
© 2015 MapR Technologies 21
今、もっとも注⽬目の⾼高いオープンデータ
®
© 2015 MapR Technologies 22
😀
®
© 2015 MapR Technologies 23
Drill インストール
•  JDK 7 が必要
•  あとは簡単
$ wget http://getdrill.org/drill/download/apache-drill-1.1.0.tar.gz
$ tar -xvzf apache-drill-1.1.0.tar.gz
$ apache-drill-1.1.0/bin/drill-embedded
0: jdbc:drill:zk=local>
®
© 2015 MapR Technologies 24
オープンデータ
$ ls -l
😀
®
© 2015 MapR Technologies 25
README
$ cat README
😀
®
© 2015 MapR Technologies 26
余談
😀
®
© 2015 MapR Technologies 27
MySQL ダンプファイル
DROP TABLE IF EXISTS `😀😀😀😀😀😀😀`;
CREATE TABLE `😀😀😀😀😀😀😀` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`createdon` timestamp NULL DEFAULT NULL,
`createdby` int(11) DEFAULT NULL,
...
) ENGINE=InnoDB AUTO_INCREMENT=36993336 DEFAULT CHARSET=utf8;
LOCK TABLES `😀😀😀😀😀😀😀` WRITE;
INSERT INTO `😀😀😀😀😀😀😀` VALUES (9,'2002-01-17 02:15:08',0,'2011-10
-14 13:47:31',20,2,2,1,1,0,19630, ... ),( ... ), ... ,( ... );
INSERT INTO `😀😀😀😀😀😀😀` VALUES (2297,'2002-03-19 22:13:14',0,'2011
-10-14 15:47:29',11,3,2,1,2,0,21891, ... ),( ... ), ... ,( ... );
...
®
© 2015 MapR Technologies 28
MySQL ダンプファイル
DROP TABLE IF EXISTS `😀😀😀😀😀😀😀`;
CREATE TABLE `😀😀😀😀😀😀😀` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`createdon` timestamp NULL DEFAULT NULL,
`createdby` int(11) DEFAULT NULL,
...
) ENGINE=InnoDB AUTO_INCREMENT=36993336 DEFAULT CHARSET=utf8;
LOCK TABLES `😀😀😀😀😀😀😀` WRITE;
INSERT INTO `😀😀😀😀😀😀😀` VALUES (9,'2002-01-17 02:15:08',0,'2011-10
-14 13:47:31',20,2,2,1,1,0,19630, ... ),( ... ), ... ,( ... );
INSERT INTO `😀😀😀😀😀😀😀` VALUES (2297,'2002-03-19 22:13:14',0,'2011
-10-14 15:47:29',11,3,2,1,2,0,21891, ... ),( ... ), ... ,( ... );
...
CSVに変換できそう
®
© 2015 MapR Technologies 29
MySQL ダンプファイルを CSV ファイルに変換
#!/usr/bin/perl
while (<>) {
s/^(--|/*| |)|DROP|CREATE|LOCK).*//g; # 余計な⾏行行を削除
s/^INSERT INTO .+ VALUES (//g; # INSERT ⽂文を削除
s/(?<=['d])),((?=['d])/n/g; # ⾏行行を分割
s/);$//g; #  余計な⽂文字を削除
s/"/""/g; # "  を  ""  に
s/((?<!)'|'(?=n)|'$|(?<=)'(?=,['d]))/"/g; # '  を  "  に
s/(^|(?<=,)NULL($|(?=,))//g; # NULL  を空⽂文字に
print unless /^$/; # 空⾏行行を除き出⼒力力
}
®
© 2015 MapR Technologies 30
CSV  ファイルを SELECT
•  件数を確認
–  たしかに 3197 万⼈人くらいはいます
0: jdbc:drill:zk=local> SELECT count(*) FROM dfs.`/tmp/😀😀😀.csv`;.csv`;
+-----------+
| EXPR$0 |
+-----------+
| 31971575 |
+-----------+
1 row selected (32.733 seconds)
®
© 2015 MapR Technologies 31
CSV  ファイルを SELECT
•  中⾝身を⾒見見てみる
–  CSV のフィールドは columns  という名前のリスト([a,b,...])になる
0: jdbc:drill:zk=local> !set maxwidth 160
0: jdbc:drill:zk=local> SELECT * FROM dfs.`/tmp/😀😀😀.csv` LIMIT 3;
+---------+
| columns |
+---------+
| ["9","2002-01-17 02:15:08","0","2011-10-14 13:47:31","20","2","2","1","1","0","
19630","😀😀😀😀😀","😀😀😀😀","😀😀😀😀😀😀","😀😀😀😀😀😀😀😀 Ave.","Suite 😀😀","To |
| ["10","2002-01-17 02:22:35","0","2011-10-14 13:47:31","10","2","3","2","2","0",
"19631","😀😀😀😀😀😀😀😀😀","😀😀😀","😀😀😀😀","😀😀😀😀😀 Ave","","York Region"," |
| ["11","2002-01-17 20:17:27","0","2011-10-14 13:47:32","0","2","2","1","2","0","
19632","😀😀😀😀😀😀😀😀😀","😀😀😀😀","😀😀😀😀","😀😀😀😀😀😀😀😀","","Toronto",""," |
+---------+
3 rows selected (0.564 seconds)
®
© 2015 MapR Technologies 32
CSV  ファイルを SELECT
•  各カラムを取り出すには
–  columns[0], columns[1]  のように添え字をつける
0: jdbc:drill:zk=local> SELECT columns[0], columns[1], columns[2], columns[3], co
lumns[4] FROM dfs.`/tmp/😀😀😀.csv` LIMIT 3;
+---------+----------------------+---------+----------------------+---------+
| EXPR$0 | EXPR$1 | EXPR$2 | EXPR$3 | EXPR$4 |
+---------+----------------------+---------+----------------------+---------+
| 9 | 2002-01-17 02:15:08 | 0 | 2011-10-14 13:47:31 | 20 |
| 10 | 2002-01-17 02:22:35 | 0 | 2011-10-14 13:47:31 | 10 |
| 11 | 2002-01-17 20:17:27 | 0 | 2011-10-14 13:47:32 | 0 |
+---------+----------------------+---------+----------------------+---------+
3 rows selected (0.356 seconds)
®
© 2015 MapR Technologies 33
CSV  ファイルを SELECT
•  カラム名をつけよう
–  MySQL ダンプファイル先頭の定義を参考に
0: jdbc:drill:zk=local> SELECT columns[0] AS id, columns[1] AS createdon, columns
[2] AS createdby, columns[3] AS updatedon, columns[4] AS updatedby FROM dfs.`/tmp
/😀😀😀.csv` LIMIT 3;
+-----+----------------------+------------+----------------------+------------+
| id | createdon | createdby | updatedon | updatedby |
+-----+----------------------+------------+----------------------+------------+
| 9 | 2002-01-17 02:15:08 | 0 | 2011-10-14 13:47:31 | 20 |
| 10 | 2002-01-17 02:22:35 | 0 | 2011-10-14 13:47:31 | 10 |
| 11 | 2002-01-17 20:17:27 | 0 | 2011-10-14 13:47:32 | 0 |
+-----+----------------------+------------+----------------------+------------+
3 rows selected (0.327 seconds)
®
© 2015 MapR Technologies 34
CSV  ファイルを SELECT
•  型はどうなってるの?
–  CSV  ファイルの場合、すべてデフォルトで VARCHAR 型
–  CAST(値 AS データ型) を使ってキャストして使う
•  エラー:  空⽂文字列列を数値型にキャストできない
0: jdbc:drill:zk=local> SELECT CAST(columns[0] AS INT) AS id, CAST(columns[1] AS TI
MESTAMP) AS createdon, CAST(columns[2] AS INT) AS createdby, CAST(columns[3] AS TIM
ESTAMP) AS updatedon, CAST(columns[4] AS INT) AS updatedby FROM dfs.`/tmp/ 😀😀😀.csv`
LIMIT 3;
Error: SYSTEM ERROR: NumberFormatException:
Fragment 1:2
[Error Id: 33d800c9-78ea-473a-8e41-b13e38307af3 on node1:31010] (state=,code=0)
®
© 2015 MapR Technologies 35
CSV の空⽂文字列列を NULL として扱うには
•  ⽅方法1: CASE  を使う
–  カラムごとに空⽂文字の扱いを変えることができる
•  ⽅方法2: システムプロパティを変更更する  
CASE
WHEN columns[2] = '' THEN NULL
ELSE CAST(columns[2] AS INT)
END
0: jdbc:drill:zk=local> ALTER SYSTEM SET `drill.exec.functions.cast_empty_string_
to_null` = true;
+-------+----------------------------------------------------------+
| ok | summary |
+-------+----------------------------------------------------------+
| true | drill.exec.functions.cast_empty_string_to_null updated. |
+-------+----------------------------------------------------------+
®
© 2015 MapR Technologies 36
CSV  ファイルを SELECT
•  とりあえず⽅方法2で・・・
0: jdbc:drill:zk=local> SELECT CAST(columns[0] AS INT) AS id, CAST(columns[1] AS TI
MESTAMP) AS createdon, CAST(columns[2] AS INT) AS createdby, CAST(columns[3] AS TIM
ESTAMP) AS updatedon, CAST(columns[4] AS INT) AS updatedby FROM dfs.`/tmp/ 😀😀😀.csv`
LIMIT 3;
+-----+------------------------+------------+------------------------+------------+
| id | createdon | createdby | updatedon | updatedby |
+-----+------------------------+------------+------------------------+------------+
| 9 | 2002-01-17 02:15:08.0 | 0 | 2011-10-14 13:47:31.0 | 20 |
| 10 | 2002-01-17 02:22:35.0 | 0 | 2011-10-14 13:47:31.0 | 10 |
| 11 | 2002-01-17 20:17:27.0 | 0 | 2011-10-14 13:47:32.0 | 0 |
+-----+------------------------+------------+------------------------+------------+
3 rows selected (0.734 seconds)
®
© 2015 MapR Technologies 37
やっぱり男ばかりなんでしょうか
•  性別は 25 番のカラム
–  1 は⼥女女性、2 は男性と思われる
–  やはり・・・
0: jdbc:drill:zk=local> SELECT columns[25] AS gender, count(*) AS number, TRUNC(1
00.0 * count(*) / 31971575, 2) AS percent FROM dfs.`/tmp/😀😀😀.csv` GROUP BY colu
mns[25] ORDER BY columns[25];
+---------+-----------+----------+
| gender | number | percent |
+---------+-----------+----------+
| | 9809 | 0.03 |
| 0 | 2 | 0.0 |
| 1 | 4414808 | 13.8 |
| 2 | 27546956 | 86.16 |
+---------+-----------+----------+
4 rows selected (31.79 seconds)
®
© 2015 MapR Technologies 38
⼤大統領領がいらっしゃると聞きましたが
•  いました
0: jdbc:drill:zk=local> SELECT columns[0] AS pnum, columns[1] AS email FROM dfs.`
/tmp/😀😀😀😀😀😀😀😀😀😀😀.csv` WHERE columns[1] = 'barack.obama@whitehouse.gov';
+-----------+------------------------------+
| pnum | email |
+-----------+------------------------------+
| 12655726 | barack.obama@whitehouse.gov |
+-----------+------------------------------+
1 row selected (10.566 seconds)
®
© 2015 MapR Technologies 39
ビューを作って楽をする
•  毎回カラム名を指定したりキャストしたりするのは⼤大変
–  ビューの定義ファイルは  /tmp に「.view.drill」という拡張⼦子のついた
JSONファイルとして保存される
0: jdbc:drill:zk=local> CREATE VIEW dfs.tmp.`😀😀😀😀😀😀😀` AS SELECT
. . . . . . . . . . . > CAST(columns[0] AS INT) AS id,
. . . . . . . . . . . > CAST(columns[1] AS TIMESTAMP) AS createdon,
. . . . . . . . . . . > CAST(columns[2] AS INT) AS createdby,
. . . . . . . . . . . > CAST(columns[3] AS TIMESTAMP) AS updatedon,
. . . . . . . . . . . > CAST(columns[4] AS INT) AS updatedby
. . . . . . . . . . . > ...
. . . . . . . . . . . > FROM
. . . . . . . . . . . > dfs.`/tmp/😀😀😀.csv`
. . . . . . . . . . . > ;
®
© 2015 MapR Technologies 40
ディレクトリに対してまとめてクエリ
•  😀😀😀😀😀😀😀😀トランザクションは CSV ファイルが 2642 個
$ ls 😀😀😀😀😀😀Transactions
2008-03-21_downloaded.csv 2010-08-19_downloaded.csv 2013-01-16_downloaded.csv
2008-03-22_downloaded.csv 2010-08-20_downloaded.csv 2013-01-17_downloaded.csv
2008-03-23_downloaded.csv 2010-08-21_downloaded.csv 2013-01-18_downloaded.csv
2008-03-24_downloaded.csv 2010-08-22_downloaded.csv 2013-01-19_downloaded.csv
2008-03-25_downloaded.csv 2010-08-23_downloaded.csv 2013-01-20_downloaded.csv
2008-03-26_downloaded.csv 2010-08-24_downloaded.csv 2013-01-21_downloaded.csv
2008-03-27_downloaded.csv 2010-08-25_downloaded.csv 2013-01-22_downloaded.csv
2008-03-28_downloaded.csv 2010-08-26_downloaded.csv 2013-01-23_downloaded.csv
2008-03-29_downloaded.csv 2010-08-27_downloaded.csv 2013-01-24_downloaded.csv
2008-03-30_downloaded.csv 2010-08-28_downloaded.csv 2013-01-25_downloaded.csv
2008-03-31_downloaded.csv 2010-08-29_downloaded.csv 2013-01-26_downloaded.csv
2008-04-01_downloaded.csv 2010-08-30_downloaded.csv 2013-01-27_downloaded.csv
2008-04-02_downloaded.csv 2010-08-31_downloaded.csv 2013-01-28_downloaded.csv
2008-04-03_downloaded.csv 2010-09-01_downloaded.csv 2013-01-29_downloaded.csv
...
®
© 2015 MapR Technologies 41
ディレクトリに対してまとめてクエリ
•  データソースはファイルではなくディレクトリ
•  国別トランザクション数のトップ 10
0: jdbc:drill:zk=local> columns[19] AS TXT_COUNTRY, count(*) AS number from dfs.`/tmp/
😀😀😀😀😀😀Transactions` GROUP BY columns[19] ORDER BY count(*) DESC LIMIT 10;Transactions` GROUP BY columns[19] ORDER BY count(*) DESC LIMIT 10;
+--------------+----------+
| TXT_COUNTRY | number |
+--------------+----------+
| US | 7591509 |
| CA | 823746 |
| BR | 197032 |
| AU | 146745 |
| TW | 118338 |
| CL | 109875 |
| ZA | 78126 |
| AR | 75314 |
| JP | 74165 |
| GB | 57901 |
+--------------+----------+
®
© 2015 MapR Technologies 42
ディレクトリを階層構造にしてみる
•  年年と⽉月のディレクトリを作って、CSV  ファイルを配置する
$ cd 😀😀😀😀😀😀Transactions
$ for file in `ls *.csv`; do
> dir=`echo $file | cut -c 1-7 | tr - /`
>   if [ ! -d $dir ]; then
> mkdir -p $dir
> fi
>     mv $file $dir
> done
$ ls
2008 2009 2010 2011 2012 2013 2014 2015
$ ls 2008
03 04 05 06 07 08 09 10 11 12
$ ls 2008/03
2008-03-21_downloaded.csv 2008-03-25_downloaded.csv 2008-03-29_downloaded.csv
2008-03-22_downloaded.csv 2008-03-26_downloaded.csv 2008-03-30_downloaded.csv
2008-03-23_downloaded.csv 2008-03-27_downloaded.csv 2008-03-31_downloaded.csv
2008-03-24_downloaded.csv 2008-03-28_downloaded.csv
®
© 2015 MapR Technologies 43
⽉月別トランザクション総額
•  dir0,dir1はディレクトリ名を表す特別なスキーマ
0: jdbc:drill:zk=local> SELECT dir0 AS year, dir1 AS month, TRUNC(SUM(CAST(REGEXP
_REPLACE(REGEXP_REPLACE(columns[2], '^(', '-'), ',|)', '') AS DOUBLE)), 2) AS
amount from dfs.`/tmp/😀😀😀😀😀😀Transactions` WHERE columns[2] <> 'AMOUNT' GROUP
BY dir0, dir1 ORDER BY dir0, dir1;
+-------+-------+-----------------+
| dir0 | dir1 | amount |
+-------+-------+-----------------+
| 2008 | 03 | 97676.25 |
| 2008 | 04 | 266162.39 |
| 2008 | 05 | 1330456.45 |
| 2008 | 06 | 1630110.26 |
| 2008 | 07 | 2590733.03 |
| 2008 | 08 | 2743130.11 |
| 2008 | 09 | 2436655.66 |
| 2008 | 10 | 2534268.59 |
| 2008 | 11 | 2934391.31 |
...
®
© 2015 MapR Technologies 44
⽉月別トランザクション総額
😀
®
© 2015 MapR Technologies 45
まとめ
•  Apache Drill で、データをロードすることなく、すぐに分析を始
めることができる
•  多数のファイルが散在している場合でも、まとめてクエリをか
けることができる
®
© 2015 MapR Technologies 46
Q&A
@mapr_japan maprjapan
sales-jp@mapr.com
お問い合わせはこちらまで
MapR
maprtech
mapr-technologies

Contenu connexe

Tendances

MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR Technologies Japan
 
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかHBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかMapR Technologies Japan
 
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...MapR Technologies Japan
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09MapR Technologies Japan
 
MapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Technologies Japan
 
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR Technologies Japan
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンMapR Technologies Japan
 
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...MapR Technologies Japan
 
Hadoopソースコードリーディング8/MapRを使ってみた
Hadoopソースコードリーディング8/MapRを使ってみたHadoopソースコードリーディング8/MapRを使ってみた
Hadoopソースコードリーディング8/MapRを使ってみたRecruit Technologies
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントCloudera Japan
 
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャMapR Technologies Japan
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)Toru Takizawa
 
Kuduを調べてみた #dogenzakalt
Kuduを調べてみた #dogenzakaltKuduを調べてみた #dogenzakalt
Kuduを調べてみた #dogenzakaltToshihiro Suzuki
 
Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmerSho Shimauchi
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...Insight Technology, Inc.
 
20160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #520160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #5Koichiro Sasaki
 
オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724Cloudera Japan
 

Tendances (20)

MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
 
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかHBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
 
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
ストリーミングアーキテクチャ: State から Flow へ - 2016/02/08 Hadoop / Spark Conference Japan ...
 
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
Spark Streaming の基本とスケールする時系列データ処理 - Spark Meetup December 2015/12/09
 
MapR M7 技術概要
MapR M7 技術概要MapR M7 技術概要
MapR M7 技術概要
 
MapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォーム
 
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 
Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターン
 
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
 
Hadoopソースコードリーディング8/MapRを使ってみた
Hadoopソースコードリーディング8/MapRを使ってみたHadoopソースコードリーディング8/MapRを使ってみた
Hadoopソースコードリーディング8/MapRを使ってみた
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイント
 
時系列の世界の時系列データ
時系列の世界の時系列データ時系列の世界の時系列データ
時系列の世界の時系列データ
 
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)
 
Kuduを調べてみた #dogenzakalt
Kuduを調べてみた #dogenzakaltKuduを調べてみた #dogenzakalt
Kuduを調べてみた #dogenzakalt
 
Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmer
 
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
[db tech showcase Tokyo 2014] L32: Apache Cassandraに注目!!(IoT, Bigdata、NoSQLのバ...
 
20160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #520160121 データサイエンティスト協会 木曜セミナー #5
20160121 データサイエンティスト協会 木曜セミナー #5
 
オライリーセミナー Hive入門 #oreilly0724
オライリーセミナー Hive入門  #oreilly0724オライリーセミナー Hive入門  #oreilly0724
オライリーセミナー Hive入門 #oreilly0724
 

En vedette

Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11MapR Technologies Japan
 
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...Insight Technology, Inc.
 
Db tech showcase2015
Db tech showcase2015Db tech showcase2015
Db tech showcase2015emin_press
 
[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...
[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...
[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...Insight Technology, Inc.
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれからYifeng Jiang
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入Hisao Soyama
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜Takahiro Inoue
 
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...Insight Technology, Inc.
 

En vedette (8)

Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
 
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
 
Db tech showcase2015
Db tech showcase2015Db tech showcase2015
Db tech showcase2015
 
[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...
[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...
[db tech showcase Tokyo 2015] C32:「データ一貫性にこだわる日立のインメモリ分散KVS~こだわりの理由と実現方法とは~」 ...
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれから
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
 
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
[db tech showcase Tokyo 2016] A32: Oracle脳で考えるSQL Server運用 by 株式会社インサイトテクノロジー...
 

Similaire à Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
SQL Server 2016 R Services + Microsoft R Server 技術資料
SQL Server 2016 R Services + Microsoft R Server 技術資料SQL Server 2016 R Services + Microsoft R Server 技術資料
SQL Server 2016 R Services + Microsoft R Server 技術資料Koichiro Sasaki
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎Insight Technology, Inc.
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Shintaro Fukushima
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇Manabu Ori
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付きInsight Technology, Inc.
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Web Services Japan
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するTakahiro Inoue
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~じゅん なかざ
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best PracticeHadoop / Spark Conference Japan
 

Similaire à Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11 (20)

Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 
SQL Server 2016 R Services + Microsoft R Server 技術資料
SQL Server 2016 R Services + Microsoft R Server 技術資料SQL Server 2016 R Services + Microsoft R Server 技術資料
SQL Server 2016 R Services + Microsoft R Server 技術資料
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
 
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ  by トレジャーデータ株式会社 斉藤太郎
[db tech showcase Tokyo 2014] D33: Prestoで実現するインタラクティブクエリ by トレジャーデータ株式会社 斉藤太郎
 
20150630_MySQL勉強会
20150630_MySQL勉強会20150630_MySQL勉強会
20150630_MySQL勉強会
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
Windows ✖︎ Docker
Windows ✖︎ DockerWindows ✖︎ Docker
Windows ✖︎ Docker
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
トレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解するトレジャーデータのバッチクエリとアドホッククエリを理解する
トレジャーデータのバッチクエリとアドホッククエリを理解する
 
既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~既存システムへの新技術活用法 ~fluntd/MongoDB~
既存システムへの新技術活用法 ~fluntd/MongoDB~
 
Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?Apache Hadoopの未来 3系になって何が変わるのか?
Apache Hadoopの未来 3系になって何が変わるのか?
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practiceマルチテナント Hadoop クラスタのためのモニタリング Best Practice
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
 

Plus de MapR Technologies Japan

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

Plus de MapR Technologies Japan (8)

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

Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11

  • 1. ® © 2015 MapR Technologies 1 ® © 2015 MapR Technologies Apache Drill でオープンデータを分析してみる 草薙  昭彦 MapR Technologies 2015 年年  9 ⽉月  11 ⽇日
  • 2. ® © 2015 MapR Technologies 2 Apache Drill 1.0 リリース (5/19) http://drill.apache.org
  • 3. ® © 2015 MapR Technologies 3 本⽇日のトピック •  Apache Drill 概要 •  オープンデータを分析してみよう
  • 4. ® © 2015 MapR Technologies 4© 2015 MapR Technologies ® Apache Drill 概要
  • 5. ® © 2015 MapR Technologies 5 ⾮非構造化データ 構造化データ 1980 2000 20101990 2020 データは2年年で倍に増える ⾮非構造化データ  の割合は 企業や組織が集めたデータ の  80%以上  に増⼤大する 出典: Human-Computer Interaction & Knowledge Discovery in Complex Unstructured, Big Data 合計格納データサイズ
  • 6. ® © 2015 MapR Technologies 6 1980 2000 20101990 2020 固定スキーマ DB管理理者が構造を管理理 動的/柔軟なスキーマ アプリケーションが構造を管理理 ⾮非リレーショナルデータベースリレーショナルデータベース GB〜~TB TB〜~PBデータサイズ データベース データは⾮非リレーショナルデータストアに向かう データ構造 開発スタイル 構造化 構造化、半構造化、⾮非構造化 計画的(リリースサイクル=数ヶ⽉月〜~数年年) 反復復的(リリースサイクル=数⽇日〜~数週間)
  • 7. ® © 2015 MapR Technologies 7 ⾮非構造化データの時代の  SQL とは? SQL の使いやすさ NoSQL の柔軟性 •  SQL •  BI (Tableau、MicroStrategy など) •  低レイテンシ •  スケーラビリティ •  スキーマ管理理なし –  HDFS (Parquet、JSON など) –  HBase –  … •  データ変換・複製なし
  • 8. ® © 2015 MapR Technologies 8 Industry's First Schema-free SQL engine for Big Data ®
  • 9. ® © 2015 MapR Technologies 9 セルフサービスからスキーマフリーへの拡張 迅速さ&ビジネス価値 BI のユースケース IT部⾨門主導のBI セルフサービス BI スキーマフリー データ探索索 IT部⾨門主導のBI IT部⾨門主導のBI セルフサービス BI IT 部⾨門への依存なしで アナリストが主導 IT 部⾨門のETLの⽀支援を 受け、アナリストが主導 IT 部⾨門が作成する レポート、スプレッドシート 1980年年代 -1990年年代 2000年年代 現在
  • 10. ® © 2015 MapR Technologies 10 即時分析により「即断可能な」ビジネスを実現 Hadoop
 データ データ モデリング 変換 データ移動 (任意) ユーザー Hadoop
 データ ユーザー 管理理された アプローチ 探索索的な アプローチ 新しいビジネスの問いかけソースデータの変更更 結果を得るまでの合計時間: 数週間から数ヶ⽉月 結果を得るまでの合計時間: 数分
  • 11. ® © 2015 MapR Technologies 11 Drill は  動的なスキーマディスカバリ  をサポート •  固定スキーマ •  中央管理理されたレポジトリのスキー   マを利利⽤用  (Hive メタストア) •  固定スキーマ、変化するスキーマ、   もしくはスキーマレス •  中央管理理されたレポジトリのスキーマ、   ⾃自⼰己記述型データのスキーマを利利⽤用 2動的にスキーマを発⾒見見事前にスキーマを宣⾔言 SCHEMA ON WRITE SCHEMA BEFORE READ SCHEMA ON THE FLY
  • 12. ® © 2015 MapR Technologies 12 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 テーブル 複雑性
  • 13. ® © 2015 MapR Technologies 13 -  サブディレクトリ -  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 ストレージプラグインインスタンス
  • 14. ® © 2015 MapR Technologies 14 アーキテクチャの概要 •  コモディティサーバのクラスタ –  各ノード上でデーモン  (drillbit) が動作 •  他の実⾏行行エンジンには⾮非依存(MapReduce、Spark、Tez) –  より優れた性能と管理理性 •  ZooKeeper が逐⼀一変化するクラスタのメンバーシップ情報を管理理 –  drillbit は  ZooKeeper を利利⽤用してクラスタ内の他の  drillbit を⾒見見つける –  クライアントは  ZooKeeper を利利⽤用して  drillbit を⾒見見つける •  データ処理理単位は  カラムナレコードバッチ   –  性能への影響を最⼩小限に抑えつつスキーマの柔軟性を実現
  • 15. ® © 2015 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. ® © 2015 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. ® © 2015 MapR Technologies 17 drillbit 内部のコアモジュール   SQL パーサ Hive HBase 分散キャッシュ ストレージプラグイン MongoDB DFS 物理理プラン 実⾏行行エンジン論論理理プラン オプティマイザ RPC エンドポイント
  • 18. ® © 2015 MapR Technologies 18© 2015 MapR Technologies ® オープンデータを分析してみよう
  • 19. ® © 2015 MapR Technologies 19 Drill で政府統計情報  (e-Stat) を分析してみよう
  • 20. ® © 2015 MapR Technologies 20 Drill で政府統計情報  (e-Stat) を分析してみよう 政府統計情報 e-Stat を Apache Drill で分析してみる
 http://nagix.hatenablog.com/entry/2015/05/21/232526
  • 21. ® © 2015 MapR Technologies 21 今、もっとも注⽬目の⾼高いオープンデータ
  • 22. ® © 2015 MapR Technologies 22 😀
  • 23. ® © 2015 MapR Technologies 23 Drill インストール •  JDK 7 が必要 •  あとは簡単 $ wget http://getdrill.org/drill/download/apache-drill-1.1.0.tar.gz $ tar -xvzf apache-drill-1.1.0.tar.gz $ apache-drill-1.1.0/bin/drill-embedded 0: jdbc:drill:zk=local>
  • 24. ® © 2015 MapR Technologies 24 オープンデータ $ ls -l 😀
  • 25. ® © 2015 MapR Technologies 25 README $ cat README 😀
  • 26. ® © 2015 MapR Technologies 26 余談 😀
  • 27. ® © 2015 MapR Technologies 27 MySQL ダンプファイル DROP TABLE IF EXISTS `😀😀😀😀😀😀😀`; CREATE TABLE `😀😀😀😀😀😀😀` ( `id` int(11) NOT NULL AUTO_INCREMENT, `createdon` timestamp NULL DEFAULT NULL, `createdby` int(11) DEFAULT NULL, ... ) ENGINE=InnoDB AUTO_INCREMENT=36993336 DEFAULT CHARSET=utf8; LOCK TABLES `😀😀😀😀😀😀😀` WRITE; INSERT INTO `😀😀😀😀😀😀😀` VALUES (9,'2002-01-17 02:15:08',0,'2011-10 -14 13:47:31',20,2,2,1,1,0,19630, ... ),( ... ), ... ,( ... ); INSERT INTO `😀😀😀😀😀😀😀` VALUES (2297,'2002-03-19 22:13:14',0,'2011 -10-14 15:47:29',11,3,2,1,2,0,21891, ... ),( ... ), ... ,( ... ); ...
  • 28. ® © 2015 MapR Technologies 28 MySQL ダンプファイル DROP TABLE IF EXISTS `😀😀😀😀😀😀😀`; CREATE TABLE `😀😀😀😀😀😀😀` ( `id` int(11) NOT NULL AUTO_INCREMENT, `createdon` timestamp NULL DEFAULT NULL, `createdby` int(11) DEFAULT NULL, ... ) ENGINE=InnoDB AUTO_INCREMENT=36993336 DEFAULT CHARSET=utf8; LOCK TABLES `😀😀😀😀😀😀😀` WRITE; INSERT INTO `😀😀😀😀😀😀😀` VALUES (9,'2002-01-17 02:15:08',0,'2011-10 -14 13:47:31',20,2,2,1,1,0,19630, ... ),( ... ), ... ,( ... ); INSERT INTO `😀😀😀😀😀😀😀` VALUES (2297,'2002-03-19 22:13:14',0,'2011 -10-14 15:47:29',11,3,2,1,2,0,21891, ... ),( ... ), ... ,( ... ); ... CSVに変換できそう
  • 29. ® © 2015 MapR Technologies 29 MySQL ダンプファイルを CSV ファイルに変換 #!/usr/bin/perl while (<>) { s/^(--|/*| |)|DROP|CREATE|LOCK).*//g; # 余計な⾏行行を削除 s/^INSERT INTO .+ VALUES (//g; # INSERT ⽂文を削除 s/(?<=['d])),((?=['d])/n/g; # ⾏行行を分割 s/);$//g; #  余計な⽂文字を削除 s/"/""/g; # "  を  ""  に s/((?<!)'|'(?=n)|'$|(?<=)'(?=,['d]))/"/g; # '  を  "  に s/(^|(?<=,)NULL($|(?=,))//g; # NULL  を空⽂文字に print unless /^$/; # 空⾏行行を除き出⼒力力 }
  • 30. ® © 2015 MapR Technologies 30 CSV  ファイルを SELECT •  件数を確認 –  たしかに 3197 万⼈人くらいはいます 0: jdbc:drill:zk=local> SELECT count(*) FROM dfs.`/tmp/😀😀😀.csv`;.csv`; +-----------+ | EXPR$0 | +-----------+ | 31971575 | +-----------+ 1 row selected (32.733 seconds)
  • 31. ® © 2015 MapR Technologies 31 CSV  ファイルを SELECT •  中⾝身を⾒見見てみる –  CSV のフィールドは columns  という名前のリスト([a,b,...])になる 0: jdbc:drill:zk=local> !set maxwidth 160 0: jdbc:drill:zk=local> SELECT * FROM dfs.`/tmp/😀😀😀.csv` LIMIT 3; +---------+ | columns | +---------+ | ["9","2002-01-17 02:15:08","0","2011-10-14 13:47:31","20","2","2","1","1","0"," 19630","😀😀😀😀😀","😀😀😀😀","😀😀😀😀😀😀","😀😀😀😀😀😀😀😀 Ave.","Suite 😀😀","To | | ["10","2002-01-17 02:22:35","0","2011-10-14 13:47:31","10","2","3","2","2","0", "19631","😀😀😀😀😀😀😀😀😀","😀😀😀","😀😀😀😀","😀😀😀😀😀 Ave","","York Region"," | | ["11","2002-01-17 20:17:27","0","2011-10-14 13:47:32","0","2","2","1","2","0"," 19632","😀😀😀😀😀😀😀😀😀","😀😀😀😀","😀😀😀😀","😀😀😀😀😀😀😀😀","","Toronto",""," | +---------+ 3 rows selected (0.564 seconds)
  • 32. ® © 2015 MapR Technologies 32 CSV  ファイルを SELECT •  各カラムを取り出すには –  columns[0], columns[1]  のように添え字をつける 0: jdbc:drill:zk=local> SELECT columns[0], columns[1], columns[2], columns[3], co lumns[4] FROM dfs.`/tmp/😀😀😀.csv` LIMIT 3; +---------+----------------------+---------+----------------------+---------+ | EXPR$0 | EXPR$1 | EXPR$2 | EXPR$3 | EXPR$4 | +---------+----------------------+---------+----------------------+---------+ | 9 | 2002-01-17 02:15:08 | 0 | 2011-10-14 13:47:31 | 20 | | 10 | 2002-01-17 02:22:35 | 0 | 2011-10-14 13:47:31 | 10 | | 11 | 2002-01-17 20:17:27 | 0 | 2011-10-14 13:47:32 | 0 | +---------+----------------------+---------+----------------------+---------+ 3 rows selected (0.356 seconds)
  • 33. ® © 2015 MapR Technologies 33 CSV  ファイルを SELECT •  カラム名をつけよう –  MySQL ダンプファイル先頭の定義を参考に 0: jdbc:drill:zk=local> SELECT columns[0] AS id, columns[1] AS createdon, columns [2] AS createdby, columns[3] AS updatedon, columns[4] AS updatedby FROM dfs.`/tmp /😀😀😀.csv` LIMIT 3; +-----+----------------------+------------+----------------------+------------+ | id | createdon | createdby | updatedon | updatedby | +-----+----------------------+------------+----------------------+------------+ | 9 | 2002-01-17 02:15:08 | 0 | 2011-10-14 13:47:31 | 20 | | 10 | 2002-01-17 02:22:35 | 0 | 2011-10-14 13:47:31 | 10 | | 11 | 2002-01-17 20:17:27 | 0 | 2011-10-14 13:47:32 | 0 | +-----+----------------------+------------+----------------------+------------+ 3 rows selected (0.327 seconds)
  • 34. ® © 2015 MapR Technologies 34 CSV  ファイルを SELECT •  型はどうなってるの? –  CSV  ファイルの場合、すべてデフォルトで VARCHAR 型 –  CAST(値 AS データ型) を使ってキャストして使う •  エラー:  空⽂文字列列を数値型にキャストできない 0: jdbc:drill:zk=local> SELECT CAST(columns[0] AS INT) AS id, CAST(columns[1] AS TI MESTAMP) AS createdon, CAST(columns[2] AS INT) AS createdby, CAST(columns[3] AS TIM ESTAMP) AS updatedon, CAST(columns[4] AS INT) AS updatedby FROM dfs.`/tmp/ 😀😀😀.csv` LIMIT 3; Error: SYSTEM ERROR: NumberFormatException: Fragment 1:2 [Error Id: 33d800c9-78ea-473a-8e41-b13e38307af3 on node1:31010] (state=,code=0)
  • 35. ® © 2015 MapR Technologies 35 CSV の空⽂文字列列を NULL として扱うには •  ⽅方法1: CASE  を使う –  カラムごとに空⽂文字の扱いを変えることができる •  ⽅方法2: システムプロパティを変更更する   CASE WHEN columns[2] = '' THEN NULL ELSE CAST(columns[2] AS INT) END 0: jdbc:drill:zk=local> ALTER SYSTEM SET `drill.exec.functions.cast_empty_string_ to_null` = true; +-------+----------------------------------------------------------+ | ok | summary | +-------+----------------------------------------------------------+ | true | drill.exec.functions.cast_empty_string_to_null updated. | +-------+----------------------------------------------------------+
  • 36. ® © 2015 MapR Technologies 36 CSV  ファイルを SELECT •  とりあえず⽅方法2で・・・ 0: jdbc:drill:zk=local> SELECT CAST(columns[0] AS INT) AS id, CAST(columns[1] AS TI MESTAMP) AS createdon, CAST(columns[2] AS INT) AS createdby, CAST(columns[3] AS TIM ESTAMP) AS updatedon, CAST(columns[4] AS INT) AS updatedby FROM dfs.`/tmp/ 😀😀😀.csv` LIMIT 3; +-----+------------------------+------------+------------------------+------------+ | id | createdon | createdby | updatedon | updatedby | +-----+------------------------+------------+------------------------+------------+ | 9 | 2002-01-17 02:15:08.0 | 0 | 2011-10-14 13:47:31.0 | 20 | | 10 | 2002-01-17 02:22:35.0 | 0 | 2011-10-14 13:47:31.0 | 10 | | 11 | 2002-01-17 20:17:27.0 | 0 | 2011-10-14 13:47:32.0 | 0 | +-----+------------------------+------------+------------------------+------------+ 3 rows selected (0.734 seconds)
  • 37. ® © 2015 MapR Technologies 37 やっぱり男ばかりなんでしょうか •  性別は 25 番のカラム –  1 は⼥女女性、2 は男性と思われる –  やはり・・・ 0: jdbc:drill:zk=local> SELECT columns[25] AS gender, count(*) AS number, TRUNC(1 00.0 * count(*) / 31971575, 2) AS percent FROM dfs.`/tmp/😀😀😀.csv` GROUP BY colu mns[25] ORDER BY columns[25]; +---------+-----------+----------+ | gender | number | percent | +---------+-----------+----------+ | | 9809 | 0.03 | | 0 | 2 | 0.0 | | 1 | 4414808 | 13.8 | | 2 | 27546956 | 86.16 | +---------+-----------+----------+ 4 rows selected (31.79 seconds)
  • 38. ® © 2015 MapR Technologies 38 ⼤大統領領がいらっしゃると聞きましたが •  いました 0: jdbc:drill:zk=local> SELECT columns[0] AS pnum, columns[1] AS email FROM dfs.` /tmp/😀😀😀😀😀😀😀😀😀😀😀.csv` WHERE columns[1] = 'barack.obama@whitehouse.gov'; +-----------+------------------------------+ | pnum | email | +-----------+------------------------------+ | 12655726 | barack.obama@whitehouse.gov | +-----------+------------------------------+ 1 row selected (10.566 seconds)
  • 39. ® © 2015 MapR Technologies 39 ビューを作って楽をする •  毎回カラム名を指定したりキャストしたりするのは⼤大変 –  ビューの定義ファイルは  /tmp に「.view.drill」という拡張⼦子のついた JSONファイルとして保存される 0: jdbc:drill:zk=local> CREATE VIEW dfs.tmp.`😀😀😀😀😀😀😀` AS SELECT . . . . . . . . . . . > CAST(columns[0] AS INT) AS id, . . . . . . . . . . . > CAST(columns[1] AS TIMESTAMP) AS createdon, . . . . . . . . . . . > CAST(columns[2] AS INT) AS createdby, . . . . . . . . . . . > CAST(columns[3] AS TIMESTAMP) AS updatedon, . . . . . . . . . . . > CAST(columns[4] AS INT) AS updatedby . . . . . . . . . . . > ... . . . . . . . . . . . > FROM . . . . . . . . . . . > dfs.`/tmp/😀😀😀.csv` . . . . . . . . . . . > ;
  • 40. ® © 2015 MapR Technologies 40 ディレクトリに対してまとめてクエリ •  😀😀😀😀😀😀😀😀トランザクションは CSV ファイルが 2642 個 $ ls 😀😀😀😀😀😀Transactions 2008-03-21_downloaded.csv 2010-08-19_downloaded.csv 2013-01-16_downloaded.csv 2008-03-22_downloaded.csv 2010-08-20_downloaded.csv 2013-01-17_downloaded.csv 2008-03-23_downloaded.csv 2010-08-21_downloaded.csv 2013-01-18_downloaded.csv 2008-03-24_downloaded.csv 2010-08-22_downloaded.csv 2013-01-19_downloaded.csv 2008-03-25_downloaded.csv 2010-08-23_downloaded.csv 2013-01-20_downloaded.csv 2008-03-26_downloaded.csv 2010-08-24_downloaded.csv 2013-01-21_downloaded.csv 2008-03-27_downloaded.csv 2010-08-25_downloaded.csv 2013-01-22_downloaded.csv 2008-03-28_downloaded.csv 2010-08-26_downloaded.csv 2013-01-23_downloaded.csv 2008-03-29_downloaded.csv 2010-08-27_downloaded.csv 2013-01-24_downloaded.csv 2008-03-30_downloaded.csv 2010-08-28_downloaded.csv 2013-01-25_downloaded.csv 2008-03-31_downloaded.csv 2010-08-29_downloaded.csv 2013-01-26_downloaded.csv 2008-04-01_downloaded.csv 2010-08-30_downloaded.csv 2013-01-27_downloaded.csv 2008-04-02_downloaded.csv 2010-08-31_downloaded.csv 2013-01-28_downloaded.csv 2008-04-03_downloaded.csv 2010-09-01_downloaded.csv 2013-01-29_downloaded.csv ...
  • 41. ® © 2015 MapR Technologies 41 ディレクトリに対してまとめてクエリ •  データソースはファイルではなくディレクトリ •  国別トランザクション数のトップ 10 0: jdbc:drill:zk=local> columns[19] AS TXT_COUNTRY, count(*) AS number from dfs.`/tmp/ 😀😀😀😀😀😀Transactions` GROUP BY columns[19] ORDER BY count(*) DESC LIMIT 10;Transactions` GROUP BY columns[19] ORDER BY count(*) DESC LIMIT 10; +--------------+----------+ | TXT_COUNTRY | number | +--------------+----------+ | US | 7591509 | | CA | 823746 | | BR | 197032 | | AU | 146745 | | TW | 118338 | | CL | 109875 | | ZA | 78126 | | AR | 75314 | | JP | 74165 | | GB | 57901 | +--------------+----------+
  • 42. ® © 2015 MapR Technologies 42 ディレクトリを階層構造にしてみる •  年年と⽉月のディレクトリを作って、CSV  ファイルを配置する $ cd 😀😀😀😀😀😀Transactions $ for file in `ls *.csv`; do > dir=`echo $file | cut -c 1-7 | tr - /` >   if [ ! -d $dir ]; then > mkdir -p $dir > fi >     mv $file $dir > done $ ls 2008 2009 2010 2011 2012 2013 2014 2015 $ ls 2008 03 04 05 06 07 08 09 10 11 12 $ ls 2008/03 2008-03-21_downloaded.csv 2008-03-25_downloaded.csv 2008-03-29_downloaded.csv 2008-03-22_downloaded.csv 2008-03-26_downloaded.csv 2008-03-30_downloaded.csv 2008-03-23_downloaded.csv 2008-03-27_downloaded.csv 2008-03-31_downloaded.csv 2008-03-24_downloaded.csv 2008-03-28_downloaded.csv
  • 43. ® © 2015 MapR Technologies 43 ⽉月別トランザクション総額 •  dir0,dir1はディレクトリ名を表す特別なスキーマ 0: jdbc:drill:zk=local> SELECT dir0 AS year, dir1 AS month, TRUNC(SUM(CAST(REGEXP _REPLACE(REGEXP_REPLACE(columns[2], '^(', '-'), ',|)', '') AS DOUBLE)), 2) AS amount from dfs.`/tmp/😀😀😀😀😀😀Transactions` WHERE columns[2] <> 'AMOUNT' GROUP BY dir0, dir1 ORDER BY dir0, dir1; +-------+-------+-----------------+ | dir0 | dir1 | amount | +-------+-------+-----------------+ | 2008 | 03 | 97676.25 | | 2008 | 04 | 266162.39 | | 2008 | 05 | 1330456.45 | | 2008 | 06 | 1630110.26 | | 2008 | 07 | 2590733.03 | | 2008 | 08 | 2743130.11 | | 2008 | 09 | 2436655.66 | | 2008 | 10 | 2534268.59 | | 2008 | 11 | 2934391.31 | ...
  • 44. ® © 2015 MapR Technologies 44 ⽉月別トランザクション総額 😀
  • 45. ® © 2015 MapR Technologies 45 まとめ •  Apache Drill で、データをロードすることなく、すぐに分析を始 めることができる •  多数のファイルが散在している場合でも、まとめてクエリをか けることができる
  • 46. ® © 2015 MapR Technologies 46 Q&A @mapr_japan maprjapan sales-jp@mapr.com お問い合わせはこちらまで MapR maprtech mapr-technologies