SlideShare une entreprise Scribd logo
1  sur  26
© 2014 MapR Technologies 1© 2014 MapR Technologies
Apache Drill で日本語を扱ってみよう
+ オープンデータ解析
© 2014 MapR Technologies 2
自己紹介
• 梅川 真人(ウメカワマサト)
• MapR Technologies
セールスエンジニア
• 2015/5 に MapR に
それまでは SIer にいたが MapR に惚れてしまい転職
• 趣味は YOGA、でも最近さぼりぎみ。。
© 2014 MapR Technologies 3© 2014 MapR Technologies
Apache Drill で日本語を扱う時の注意点
© 2014 MapR Technologies 4
ゆるい日本語のデータ
No タイトル 県名
1 くまモン 熊本
2 ふなっしー 船橋
3 せんとくん 奈良
ファイル名: yuru.csv
© 2014 MapR Technologies 5
ロケール(1)
$ echo $LANG
en_US.UTF-8
$ sqlline
0: jdbc:drill:zk=drill01:5181>
select *
from dfs.`/tmp/yuru.csv`;
+---------------------+
| columns |
+---------------------+
| ["1","????","??"] |
| ["2","?????","??"] |
| ["3","?????","??"] |
+---------------------+
3 rows selected (0.159 seconds)
ロケールがen_US.UTF-8だと文字化けする
© 2014 MapR Technologies 6
ロケール(2)
$ echo $LANG
ja_JP.UTF-8
$ sqlline
0: jdbc:drill:zk=drill01:5181>
select *
from dfs.`/tmp/yuru.csv`;
+---------------------+
| columns |
+---------------------+|
["1","くまモン","熊本"] |
| ["2","ふなっしー","船橋"] |
| ["3","せんとくん","奈良"] |
+---------------------+
3 rows selected (0.159 seconds)
Ja_JP.UTF-8にすれば文字化けせずに表示される
© 2014 MapR Technologies 7
文字列リテラルのエラー
0: jdbc:drill:> select
. . . . . . . > columns[0] 番号,
. . . . . . . > columns[1] 名前,
. . . . . . . > columns[2] 住所
. . . . . . . > from dfs.`/tmp/yuru.csv`
. . . . . . . > where columns[2] = '熊本’;
Error: SYSTEM ERROR: CalciteException: Failed to encode ‘熊本’ in character set ‘ISO-
8859-1’
[Error Id: 98a5ba50-81a6-4718-a274-a2b784d7d7aa on drill02:31010] (state=,code=0)
デフォルトだとエラーが・・
© 2014 MapR Technologies 8
文字列リテラルの対策
Apache Calcite - SQL Language
http://calcite.incubator.apache.org/docs/reference.html
DrillはSQLパーサの部分にApache Calciteを利用しているため、
Calciteのドキュメントを見てみましょう。
データ型 説明 範囲と例
CHAR(n)
CHARACTER(n)
Fixed-width
character string
Hello’, ‘’ (空文字),
_latin1’Hello’, n’Hello’,
_UTF16’Hello’, ‘Hello’ ‘there’
(複数パートに分割されたリテラル)
© 2014 MapR Technologies 9
文字列リテラルの対策済みクエリ
0: jdbc:drill:zk=local> SELECT
. . . . . . . . . . . > COLUMNS[0] 番号,
. . . . . . . . . . . > COLUMNS[1] 名前,
. . . . . . . . . . . > COLUMNS[2] 住所
. . . . . . . . . . . > FROM dfs.`/tmp/test.csv`
. . . . . . . . . . . > WHERE COLUMNS[2] = _UTF16'熊本';
+-----+--------+-----+
| 番号 | 名前 | 住所 |
+-----+--------+-----+
| 1 | くまモン | 熊本 |
+-----+--------+-----+
1 rows selected (1.543 seconds)
_UTF16 をつけてみるとうまくいきました
© 2014 MapR Technologies 10
drill1.0 での 恒久的な対応
/**
* The string property "saffron.default.charset" is the name of the default
* character set. The default is "ISO-8859-1". It is used in
* {@link org.apache.calcite.sql.validate.SqlValidator}.
*/
public final StringProperty defaultCharset =
new StringProperty(this, "saffron.default.charset", "ISO-8859-1");
毎回_UTF16をつけるのは面倒なのでデフォルトにできないか調べてみる
© 2014 MapR Technologies 11
drill1.0 での恒久的な対応
$ vi apache-drill-1.-.0/conf/drill-env.sh
export DRILL_SHELL_JAVA_OPTS="-Dsaffron.default.charset=UTF-16LE"
「saffron.default.charset」というプロパティにUTF-16を指定すればよさそうな感じで
す。
これを記載するのは、設定ファイルdrill-env.shの中の環境変数
DRILL_SHELL_JAVA_OPTSの設定をします。
文字セット名は、いろいろ試したところ、「UTF-16LE」である必要があるようです。
© 2014 MapR Technologies 12
まとめ
 ロケールは “ja_JP.UTF-8” に
 文字列リテラルに _UTF16 をつける
 Apache-drill-1.0.0/conf/drill-env.sh なら
export DRILL_SHELL_JAVA_OPTS=“-Dsaffron.default.charset=UTF-16LE”
を追記
© 2014 MapR Technologies 13© 2014 MapR Technologies
オープンデータから23区の人口増減率を
調べよう
© 2014 MapR Technologies 14
データ取得元
政府統計の総合窓口(e-Stat)
URL: http://www.e-stat.go.jp/api/
使用したデータ: 国勢調査(平成22年度)
政府統計コード: 00200521
APIを使うにはサイト上から利用登録をしてアプリケーションIDを取得
© 2014 MapR Technologies 15
データを取得してみる
$ curl -o stats_list.json "http://api.e-
stat.go.jp/rest/2.0/app/json/getStatsList?appId=XXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX&surveyYears=2010&statsCode=00
200521"
国勢調査の政府統計コード 自分のアプリケーションID
© 2014 MapR Technologies 16
取得したデータを見てみる
0: jdbc:drill:zk=local> SELECT * FROM dfs.`/tmp/stats_list.json` t;
+--------------------+
| GET_STATS_LIST |
+--------------------+
{“RESULT”:{“STATUS”:0,“ERROR_MSG”:“正常に終了しまし
た。”,“DATE”:“2015-05-
21T19:01:17.540+09:00”},“PARAMETER”:{“LANG”:“J”,“SURVEY_YEA
RS”:2010,“STATS_CODE”:“0 |
+----------------+
1 row selected (0.955 seconds)
© 2014 MapR Technologies 17
JSONデータを見てみる
{
"GET_STATS_LIST":{
"RESULT":{ ← 取得結果のステータス情報
“STATUS”:0,
“ERROR_MSG”:"u6B63u5E38u306Bu7D42u4E86u3057u307Eu3057u305Fu3002",
"DATE":"2015-05-21T19:01:17.540+09:00"
},
"PARAMETER":{ ← 取得時に指定したパラメータ
"LANG":"J",
"SURVEY_YEARS":2010,
"STATS_CODE":"00200521",
"DATA_FORMAT":"J"
},
“DATALIST_INF”:{ ← 統計表のリストデータ本体
"NUMBER":356,
“RESULT” INF”:{
"FROM_NUMBER":1,
"TO_NUMBER":356
},
“TABLE_INF”:[ ← 統計表のリスト
{"@id":"0003033021",...},
{"@id":"0003033022",...},
...
]
}
}
}
© 2014 MapR Technologies 18
KVGEN()とFLATTEN()関数
KVGEN()関数:
<キー>:<値>,
<キー>:<値>,
...
の並びを
[
{"key":<キー>,"value":<値>},
{"key":<キー>,"value":<値>},
...
]
に分解
Apache Drill 特有の関数。FLATTEN()関数は配列をレコードに展開。ここで
「GET_STATS_LIST」に対してKVGEN()関数とFLATTEN()関数を使うことで、一つ下の
階層のキーと値の組がレコードとして展開されます。
© 2014 MapR Technologies 19
KVGEN()とFLATTEN()関数で分解する
0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_STATS_LIST)) FROM
dfs.`/tmp/stats_list.json` t;
+----------------------------------------------------------------------------------------------------------------------+
| EXPR$0 |
+----------------------------------------------------------------------------------------------------------------------+
| {“key”:“RESULT”,“value”:{“STATUS”:0,“ERROR_MSG”:“正常に終了しました。”,“DATE”:“2015-05-
21T19:01:17.540+09:00”,“RESULT_INF”:{},“TA |
|{”key“:”PARAMETER“,”value“:{”LANG“:”J“,”SURVEY_YEARS“:2010,”STATS_CODE“:”00200521“,”D
ATA_FORMAT“:”J“,”RESULT_INF“:{},”TABLE_INF“:[]}} |
|{”key“:”DATALIST_INF“,”value“:{”NUMBER“:356,”RESULT_INF“:{”FROM_NUMBER“:1,”TO_NUMBE
R“:356},”TABLE_INF“:[{”@id“:”0003033021“,”STAT_ |
+---------------------------------------------------------------------------------------------------------------------+
3 rows selected (0.452 seconds)
© 2014 MapR Technologies 20
統計表IDを取得する
0: jdbc:drill:> SELECT.
. . . . . . > d.table_inf.`@id`,
. . . . . . . > d.table_inf.TITLE.$
. . . . . . . > FROM (
. . . . . . . > SELECT FLATTEN(t.GET_STATS_LIST.DATALIST_INF.TABLE_INF) table_inf
. . . . . . . > FROM dfs.`/tmp/stats_list.json` t
. . . . . . . > ) d
. . . . . . . > WHERE d.TABLE_INF.TITLE.$ LIKE '%人口増減%';
+-------------+-----------------------------------------------------------------+
| EXPR$0 | EXPR$1 |
+-------------+-----------------------------------------------------------------+
| 0003038586 | 人口,人口増減,面積及び人口密度 全国,市部・郡部,都道府県,市部・郡部,支庁,郡
計,市区町村・旧市町村,全域・人口集中地区 |
+-------------+-----------------------------------------------------------------+
1 row selected (1.465 seconds)
© 2014 MapR Technologies 21
地域名ビューの作成
0: jdbc:drill:zk=local> CREATE VIEW dfs.tmp.`area_info` AS SELECT
. . . . . . . . . . . > t.data.`@code` code,
. . . . . . . . . . . > t.data.`@name` name,
. . . . . . . . . . . > t.data.`@level` level,
. . . . . . . . . . . > t.data.`@parentCode` parent
. . . . . . . . . . . > FROM (
. . . . . . . . . . . > SELECT
. . . . . . . . . . . >
FLATTEN(f.GET_STATS_DATA.STATISTICAL_DATA.CLASS_INF.CLASS_OBJ[2].
CLASS) data
. . . . . . . . . . . > FROM
. . . . . . . . . . . > dfs.`/tmp/stats_data_modified.json` f
. . . . . . . . . . . > ) t;
データをSQLで扱いやすくするために、ビューとして定義してみましょう。
ここでは地域名を取り出すためのビューと、統計データを取り出すためのビューを定義します。
© 2014 MapR Technologies 22
統計データビューの作成
0: jdbc:drill:zk=local> CREATE VIEW dfs.tmp.`stats_data` AS SELECT
. . . . . . . . . . . > t.data.`@tab` tab,
. . . . . . . . . . . > t.data.`@cat01` did,
. . . . . . . . . . . > t.data.`@area` area,
. . . . . . . . . . . > t.data.$ val
. . . . . . . . . . . > FROM (
. . . . . . . . . . . > SELECT
. . . . . . . . . . . >
FLATTEN(f.GET_STATS_DATA.STATISTICAL_DATA.DATA_INF.`VALUE`)
data
. . . . . . . . . . . > FROM
. . . . . . . . . . . > dfs.`/tmp/stats_data_modified.json` f
. . . . . . . . . . . > ) t;
© 2014 MapR Technologies 23
地域名ビュー
0: jdbc:drill:zk=local> SELECT * FROM dfs.tmp.`area_info` LIMIT 10;
+--------+--------+--------+---------+
| code | name | level | parent |
+--------+--------+--------+---------+
| 00000 | 全国 | 1 | null |
| 00001 | 全国市部 | 1 | null |
| 00002 | 全国郡部 | 1 | null |
| 01000 | 北海道 | 2 | 00000 |
| 01001 | 北海道市部 | 3 | 01000 |
| 01002 | 北海道郡部 | 3 | 01000 |
| 01100 | 札幌市 | 3 | 01000 |
| 01101 | 中央区 | 4 | 01100 |
| 01102 | 北区 | 4 | 01100 |
| 01103 | 東区 | 4 | 01100 |
+--------+--------+--------+---------+
10 rows selected (11.902 seconds)
© 2014 MapR Technologies 24
統計データビュー
0: jdbc:drill:zk=local> SELECT * FROM dfs.tmp.`stats_data` LIMIT 10;
+------+--------+--------+------------+
| tab | did | area | val |
+------+--------+--------+------------+
| 020 | 00710 | 00000 | 128057352 |
| 020 | 00710 | 00001 | 116156631 |
| 020 | 00710 | 00002 | 11900721 |
| 020 | 00710 | 01000 | 5506419 |
| 020 | 00710 | 01001 | 4449360 |
| 020 | 00710 | 01002 | 1057059 |
| 020 | 00710 | 01100 | 1913545 |
| 020 | 00710 | 01101 | 220189 |
| 020 | 00710 | 01102 | 278781 |
| 020 | 00710 | 01103 | 255873 |
+------+--------+--------+------------+
10 rows selected (87.308 seconds)
© 2014 MapR Technologies 25
23区の人口増減率
0: jdbc:drill:> SELECT a.name 地域, b.val 人口, c.val 増減率
. . . . . . . > FROM (SELECT * FROM dfs.tmp.`area_info` t
. . . . . . . > WHERE t.parent = '13100') a
. . . . . . . > JOIN dfs.tmp.`stats_data` b
. . . . . . . > ON a.code = b.area AND b.tab = '020' AND
. . . . . . . > b.did = '00710’
. . . . . . . > JOIN dfs.tmp.`stats_data` c
. . . . . . . > ON a.code = c.area AND c.tab = '102' AND
. . . . . . . > c.did = '00710' AND c.val <> '-’
. . . . . . . > ORDER BY CAST(c.val AS DOUBLE) DESC;
+-------+---------+-----------+
| 地域 | 人口 | 増減率 |
+-------+---------+-----------+
| 中央区 | 122762 | 24.7594 |
| 豊島区 | 284678 | 13.60536 |
| 千代田区 | 47115 | 12.77467 |
| 港区 | 205131 | 10.36796 |
| 江東区 | 460819 | 9.49851 |
| 足立区 | 683426 | 9.38194 |
.
| 板橋区 | 535824 | 2.43575 |
| 目黒区 | 268330 | 1.61552 |
| 北区 | 335544 | 1.55321 |
| 中野区 | 314750 | 1.32732 |
| 渋谷区 | 204492 | 0.56951 |
+-------+---------+-----------+
23 rows selected (547.958 seconds)
© 2014 MapR Technologies 26
Q&A
@mapr_japan maprjapan
sales-jp@mapr.com
お問い合わせはこちらまで
MapR
maprtech
mapr-technologies
オープンデータの詳細な手順は@nagixのブログもご覧下さい
http://nagix.hatenablog.com

Contenu connexe

Tendances

Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するjunichi anno
 
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみたSQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみたKumano Ryo
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: OnlineGoogle Cloud Platform - Japan
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望Kohei KaiGai
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Spring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングSpring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングRakuten Group, Inc.
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方Satoshi Nagayasu
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスEnterpriseDB
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGoTakuya Ueda
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説Masahiko Sawada
 

Tendances (20)

NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみたSQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
 
PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介PostgreSQLレプリケーション徹底紹介
PostgreSQLレプリケーション徹底紹介
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
Spring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングSpring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシング
 
http2 最速実装 v2
http2 最速実装 v2 http2 最速実装 v2
http2 最速実装 v2
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGo
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 

En vedette

Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションMapR Technologies Japan
 
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
 
20150321 医学:医療者教育研究ネットワーク@九州大学
20150321 医学:医療者教育研究ネットワーク@九州大学20150321 医学:医療者教育研究ネットワーク@九州大学
20150321 医学:医療者教育研究ネットワーク@九州大学Takanori Hiroe
 
20151128_SMeNG_態度は変えられるのか
20151128_SMeNG_態度は変えられるのか20151128_SMeNG_態度は変えられるのか
20151128_SMeNG_態度は変えられるのかTakanori Hiroe
 
HBase New Features
HBase New FeaturesHBase New Features
HBase New Featuresrxu
 
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
 
MapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Technologies Japan
 
MapR 5.2: Getting More Value from the MapR Converged Community Edition
MapR 5.2: Getting More Value from the MapR Converged Community EditionMapR 5.2: Getting More Value from the MapR Converged Community Edition
MapR 5.2: Getting More Value from the MapR Converged Community EditionMapR Technologies
 
20170225_Sample size determination
20170225_Sample size determination20170225_Sample size determination
20170225_Sample size determinationTakanori Hiroe
 
MapR Streams and MapR Converged Data Platform
MapR Streams and MapR Converged Data PlatformMapR Streams and MapR Converged Data Platform
MapR Streams and MapR Converged Data PlatformMapR Technologies
 
Inside MapR's M7
Inside MapR's M7Inside MapR's M7
Inside MapR's M7Ted Dunning
 
Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...
Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...
Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...ervogler
 
ストリーミングアーキテクチャ: 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
 
Evolving from RDBMS to NoSQL + SQL
Evolving from RDBMS to NoSQL + SQLEvolving from RDBMS to NoSQL + SQL
Evolving from RDBMS to NoSQL + SQLMapR Technologies
 
Docker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみたDocker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみたKouta Asai
 
リクルートライフスタイルの考える ストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考える ストリームデータの活かし方(Hadoop Spark Conference2016)Atsushi Kurumada
 

En vedette (20)

Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッションApache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
Apache Drill でたしなむ セルフサービスデータ探索 - 2014/11/06 Cloudera World Tokyo 2014 LTセッション
 
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
 
20150321 医学:医療者教育研究ネットワーク@九州大学
20150321 医学:医療者教育研究ネットワーク@九州大学20150321 医学:医療者教育研究ネットワーク@九州大学
20150321 医学:医療者教育研究ネットワーク@九州大学
 
20151128_SMeNG_態度は変えられるのか
20151128_SMeNG_態度は変えられるのか20151128_SMeNG_態度は変えられるのか
20151128_SMeNG_態度は変えられるのか
 
JSME_47th_Nigata
JSME_47th_NigataJSME_47th_Nigata
JSME_47th_Nigata
 
20150827_simplesize
20150827_simplesize20150827_simplesize
20150827_simplesize
 
HBase New Features
HBase New FeaturesHBase New Features
HBase New Features
 
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
 
MapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォームMapR Streams & MapR コンバージド・データ・プラットフォーム
MapR Streams & MapR コンバージド・データ・プラットフォーム
 
MapR 5.2: Getting More Value from the MapR Converged Community Edition
MapR 5.2: Getting More Value from the MapR Converged Community EditionMapR 5.2: Getting More Value from the MapR Converged Community Edition
MapR 5.2: Getting More Value from the MapR Converged Community Edition
 
20170225_Sample size determination
20170225_Sample size determination20170225_Sample size determination
20170225_Sample size determination
 
Drill超簡単チューニング
Drill超簡単チューニングDrill超簡単チューニング
Drill超簡単チューニング
 
MapR Streams and MapR Converged Data Platform
MapR Streams and MapR Converged Data PlatformMapR Streams and MapR Converged Data Platform
MapR Streams and MapR Converged Data Platform
 
MapR & Skytree:
MapR & Skytree: MapR & Skytree:
MapR & Skytree:
 
Inside MapR's M7
Inside MapR's M7Inside MapR's M7
Inside MapR's M7
 
Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...
Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...
Big Data Hadoop Briefing Hosted by Cisco, WWT and MapR: MapR Overview Present...
 
ストリーミングアーキテクチャ: 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 ...
 
Evolving from RDBMS to NoSQL + SQL
Evolving from RDBMS to NoSQL + SQLEvolving from RDBMS to NoSQL + SQL
Evolving from RDBMS to NoSQL + SQL
 
Docker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみたDocker1.13で変わったことをわからないなりにまとめてみた
Docker1.13で変わったことをわからないなりにまとめてみた
 
リクルートライフスタイルの考える ストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)リクルートライフスタイルの考えるストリームデータの活かし方(Hadoop Spark Conference2016)
リクルートライフスタイルの考える ストリームデータの活かし方(Hadoop Spark Conference2016)
 

Similaire à Apache Drill で日本語を扱ってみよう + オープンデータ解析

Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11MapR Technologies Japan
 
Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machinesirix_jp
 
VMware NSXがサポートするトンネル方式について
VMware NSXがサポートするトンネル方式についてVMware NSXがサポートするトンネル方式について
VMware NSXがサポートするトンネル方式についてMotonori Shindo
 
L2 over L3 ecnaspsulations
L2 over L3 ecnaspsulationsL2 over L3 ecnaspsulations
L2 over L3 ecnaspsulationsMotonori Shindo
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)Satoshi Yamada
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範Ivan Tu
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)yoyamasaki
 
多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討Yu Sato
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門mangantempy
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)NTT DATA Technology & Innovation
 
MySQL勉強会 クエリチューニング編
MySQL勉強会 クエリチューニング編MySQL勉強会 クエリチューニング編
MySQL勉強会 クエリチューニング編MicroAd, Inc.(Engineer)
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12MapR Technologies Japan
 
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table についてHaruka Ozaki
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較Shinya Sugiyama
 
What's Temporal model FuelPHP東京勉強会03
What's Temporal model FuelPHP東京勉強会03What's Temporal model FuelPHP東京勉強会03
What's Temporal model FuelPHP東京勉強会03Takayuki Yamaguchi
 

Similaire à Apache Drill で日本語を扱ってみよう + オープンデータ解析 (20)

Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
Control distribution of virtual machines
Control distribution of virtual machinesControl distribution of virtual machines
Control distribution of virtual machines
 
VMware NSXがサポートするトンネル方式について
VMware NSXがサポートするトンネル方式についてVMware NSXがサポートするトンネル方式について
VMware NSXがサポートするトンネル方式について
 
L2 over L3 ecnaspsulations
L2 over L3 ecnaspsulationsL2 over L3 ecnaspsulations
L2 over L3 ecnaspsulations
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)PostgreSQL SQLチューニング入門 実践編(pgcon14j)
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範5 古雷my sql源碼與資料庫規範
5 古雷my sql源碼與資料庫規範
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 
多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討
 
サーバ異常検知入門
サーバ異常検知入門サーバ異常検知入門
サーバ異常検知入門
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
 
MySQL勉強会 クエリチューニング編
MySQL勉強会 クエリチューニング編MySQL勉強会 クエリチューニング編
MySQL勉強会 クエリチューニング編
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
 
巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について巨大な表を高速に扱うData.table について
巨大な表を高速に扱うData.table について
 
Slide
SlideSlide
Slide
 
MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較MySQLとPostgreSQLの基本的な実行プラン比較
MySQLとPostgreSQLの基本的な実行プラン比較
 
What's Temporal model FuelPHP東京勉強会03
What's Temporal model FuelPHP東京勉強会03What's Temporal model FuelPHP東京勉強会03
What's Temporal model FuelPHP東京勉強会03
 

Plus de MapR Technologies Japan

Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンMapR Technologies Japan
 
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなすMapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす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
 
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
 
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかHBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかMapR Technologies Japan
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15MapR 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
 
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャMapR Technologies Japan
 
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...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
 
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
 
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 (19)

Fast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターンFast Data を扱うためのデザインパターン
Fast Data を扱うためのデザインパターン
 
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなすMapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
MapR 5.2: MapR コンバージド・コミュニティ・エディションを使いこなす
 
スケールアウト・インメモリ分析の標準フォーマットを目指す 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...
 
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
 
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているかHBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
HBase と Drill - 緩い型付けの SQL がいかに NoSQL に適しているか
 
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
Apache Drill Overview - Tokyo Apache Drill Meetup 2015/09/15
 
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
 
異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法異常検知 - 何を探すかよく分かっていないものを見つける方法
異常検知 - 何を探すかよく分かっていないものを見つける方法
 
時系列の世界の時系列データ
時系列の世界の時系列データ時系列の世界の時系列データ
時系列の世界の時系列データ
 
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
逆らえない大きな流れ: 次世代のエンタープライズアーキテクチャ
 
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
Apache Drill: Rethinking SQL for Big data – Don’t Compromise on Flexibility o...
 
実践機械学習 — 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...
 
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
 
MapR M7 技術概要
MapR M7 技術概要MapR M7 技術概要
MapR M7 技術概要
 
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 で日本語を扱ってみよう + オープンデータ解析

  • 1. © 2014 MapR Technologies 1© 2014 MapR Technologies Apache Drill で日本語を扱ってみよう + オープンデータ解析
  • 2. © 2014 MapR Technologies 2 自己紹介 • 梅川 真人(ウメカワマサト) • MapR Technologies セールスエンジニア • 2015/5 に MapR に それまでは SIer にいたが MapR に惚れてしまい転職 • 趣味は YOGA、でも最近さぼりぎみ。。
  • 3. © 2014 MapR Technologies 3© 2014 MapR Technologies Apache Drill で日本語を扱う時の注意点
  • 4. © 2014 MapR Technologies 4 ゆるい日本語のデータ No タイトル 県名 1 くまモン 熊本 2 ふなっしー 船橋 3 せんとくん 奈良 ファイル名: yuru.csv
  • 5. © 2014 MapR Technologies 5 ロケール(1) $ echo $LANG en_US.UTF-8 $ sqlline 0: jdbc:drill:zk=drill01:5181> select * from dfs.`/tmp/yuru.csv`; +---------------------+ | columns | +---------------------+ | ["1","????","??"] | | ["2","?????","??"] | | ["3","?????","??"] | +---------------------+ 3 rows selected (0.159 seconds) ロケールがen_US.UTF-8だと文字化けする
  • 6. © 2014 MapR Technologies 6 ロケール(2) $ echo $LANG ja_JP.UTF-8 $ sqlline 0: jdbc:drill:zk=drill01:5181> select * from dfs.`/tmp/yuru.csv`; +---------------------+ | columns | +---------------------+| ["1","くまモン","熊本"] | | ["2","ふなっしー","船橋"] | | ["3","せんとくん","奈良"] | +---------------------+ 3 rows selected (0.159 seconds) Ja_JP.UTF-8にすれば文字化けせずに表示される
  • 7. © 2014 MapR Technologies 7 文字列リテラルのエラー 0: jdbc:drill:> select . . . . . . . > columns[0] 番号, . . . . . . . > columns[1] 名前, . . . . . . . > columns[2] 住所 . . . . . . . > from dfs.`/tmp/yuru.csv` . . . . . . . > where columns[2] = '熊本’; Error: SYSTEM ERROR: CalciteException: Failed to encode ‘熊本’ in character set ‘ISO- 8859-1’ [Error Id: 98a5ba50-81a6-4718-a274-a2b784d7d7aa on drill02:31010] (state=,code=0) デフォルトだとエラーが・・
  • 8. © 2014 MapR Technologies 8 文字列リテラルの対策 Apache Calcite - SQL Language http://calcite.incubator.apache.org/docs/reference.html DrillはSQLパーサの部分にApache Calciteを利用しているため、 Calciteのドキュメントを見てみましょう。 データ型 説明 範囲と例 CHAR(n) CHARACTER(n) Fixed-width character string Hello’, ‘’ (空文字), _latin1’Hello’, n’Hello’, _UTF16’Hello’, ‘Hello’ ‘there’ (複数パートに分割されたリテラル)
  • 9. © 2014 MapR Technologies 9 文字列リテラルの対策済みクエリ 0: jdbc:drill:zk=local> SELECT . . . . . . . . . . . > COLUMNS[0] 番号, . . . . . . . . . . . > COLUMNS[1] 名前, . . . . . . . . . . . > COLUMNS[2] 住所 . . . . . . . . . . . > FROM dfs.`/tmp/test.csv` . . . . . . . . . . . > WHERE COLUMNS[2] = _UTF16'熊本'; +-----+--------+-----+ | 番号 | 名前 | 住所 | +-----+--------+-----+ | 1 | くまモン | 熊本 | +-----+--------+-----+ 1 rows selected (1.543 seconds) _UTF16 をつけてみるとうまくいきました
  • 10. © 2014 MapR Technologies 10 drill1.0 での 恒久的な対応 /** * The string property "saffron.default.charset" is the name of the default * character set. The default is "ISO-8859-1". It is used in * {@link org.apache.calcite.sql.validate.SqlValidator}. */ public final StringProperty defaultCharset = new StringProperty(this, "saffron.default.charset", "ISO-8859-1"); 毎回_UTF16をつけるのは面倒なのでデフォルトにできないか調べてみる
  • 11. © 2014 MapR Technologies 11 drill1.0 での恒久的な対応 $ vi apache-drill-1.-.0/conf/drill-env.sh export DRILL_SHELL_JAVA_OPTS="-Dsaffron.default.charset=UTF-16LE" 「saffron.default.charset」というプロパティにUTF-16を指定すればよさそうな感じで す。 これを記載するのは、設定ファイルdrill-env.shの中の環境変数 DRILL_SHELL_JAVA_OPTSの設定をします。 文字セット名は、いろいろ試したところ、「UTF-16LE」である必要があるようです。
  • 12. © 2014 MapR Technologies 12 まとめ  ロケールは “ja_JP.UTF-8” に  文字列リテラルに _UTF16 をつける  Apache-drill-1.0.0/conf/drill-env.sh なら export DRILL_SHELL_JAVA_OPTS=“-Dsaffron.default.charset=UTF-16LE” を追記
  • 13. © 2014 MapR Technologies 13© 2014 MapR Technologies オープンデータから23区の人口増減率を 調べよう
  • 14. © 2014 MapR Technologies 14 データ取得元 政府統計の総合窓口(e-Stat) URL: http://www.e-stat.go.jp/api/ 使用したデータ: 国勢調査(平成22年度) 政府統計コード: 00200521 APIを使うにはサイト上から利用登録をしてアプリケーションIDを取得
  • 15. © 2014 MapR Technologies 15 データを取得してみる $ curl -o stats_list.json "http://api.e- stat.go.jp/rest/2.0/app/json/getStatsList?appId=XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX&surveyYears=2010&statsCode=00 200521" 国勢調査の政府統計コード 自分のアプリケーションID
  • 16. © 2014 MapR Technologies 16 取得したデータを見てみる 0: jdbc:drill:zk=local> SELECT * FROM dfs.`/tmp/stats_list.json` t; +--------------------+ | GET_STATS_LIST | +--------------------+ {“RESULT”:{“STATUS”:0,“ERROR_MSG”:“正常に終了しまし た。”,“DATE”:“2015-05- 21T19:01:17.540+09:00”},“PARAMETER”:{“LANG”:“J”,“SURVEY_YEA RS”:2010,“STATS_CODE”:“0 | +----------------+ 1 row selected (0.955 seconds)
  • 17. © 2014 MapR Technologies 17 JSONデータを見てみる { "GET_STATS_LIST":{ "RESULT":{ ← 取得結果のステータス情報 “STATUS”:0, “ERROR_MSG”:"u6B63u5E38u306Bu7D42u4E86u3057u307Eu3057u305Fu3002", "DATE":"2015-05-21T19:01:17.540+09:00" }, "PARAMETER":{ ← 取得時に指定したパラメータ "LANG":"J", "SURVEY_YEARS":2010, "STATS_CODE":"00200521", "DATA_FORMAT":"J" }, “DATALIST_INF”:{ ← 統計表のリストデータ本体 "NUMBER":356, “RESULT” INF”:{ "FROM_NUMBER":1, "TO_NUMBER":356 }, “TABLE_INF”:[ ← 統計表のリスト {"@id":"0003033021",...}, {"@id":"0003033022",...}, ... ] } } }
  • 18. © 2014 MapR Technologies 18 KVGEN()とFLATTEN()関数 KVGEN()関数: <キー>:<値>, <キー>:<値>, ... の並びを [ {"key":<キー>,"value":<値>}, {"key":<キー>,"value":<値>}, ... ] に分解 Apache Drill 特有の関数。FLATTEN()関数は配列をレコードに展開。ここで 「GET_STATS_LIST」に対してKVGEN()関数とFLATTEN()関数を使うことで、一つ下の 階層のキーと値の組がレコードとして展開されます。
  • 19. © 2014 MapR Technologies 19 KVGEN()とFLATTEN()関数で分解する 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_STATS_LIST)) FROM dfs.`/tmp/stats_list.json` t; +----------------------------------------------------------------------------------------------------------------------+ | EXPR$0 | +----------------------------------------------------------------------------------------------------------------------+ | {“key”:“RESULT”,“value”:{“STATUS”:0,“ERROR_MSG”:“正常に終了しました。”,“DATE”:“2015-05- 21T19:01:17.540+09:00”,“RESULT_INF”:{},“TA | |{”key“:”PARAMETER“,”value“:{”LANG“:”J“,”SURVEY_YEARS“:2010,”STATS_CODE“:”00200521“,”D ATA_FORMAT“:”J“,”RESULT_INF“:{},”TABLE_INF“:[]}} | |{”key“:”DATALIST_INF“,”value“:{”NUMBER“:356,”RESULT_INF“:{”FROM_NUMBER“:1,”TO_NUMBE R“:356},”TABLE_INF“:[{”@id“:”0003033021“,”STAT_ | +---------------------------------------------------------------------------------------------------------------------+ 3 rows selected (0.452 seconds)
  • 20. © 2014 MapR Technologies 20 統計表IDを取得する 0: jdbc:drill:> SELECT. . . . . . . > d.table_inf.`@id`, . . . . . . . > d.table_inf.TITLE.$ . . . . . . . > FROM ( . . . . . . . > SELECT FLATTEN(t.GET_STATS_LIST.DATALIST_INF.TABLE_INF) table_inf . . . . . . . > FROM dfs.`/tmp/stats_list.json` t . . . . . . . > ) d . . . . . . . > WHERE d.TABLE_INF.TITLE.$ LIKE '%人口増減%'; +-------------+-----------------------------------------------------------------+ | EXPR$0 | EXPR$1 | +-------------+-----------------------------------------------------------------+ | 0003038586 | 人口,人口増減,面積及び人口密度 全国,市部・郡部,都道府県,市部・郡部,支庁,郡 計,市区町村・旧市町村,全域・人口集中地区 | +-------------+-----------------------------------------------------------------+ 1 row selected (1.465 seconds)
  • 21. © 2014 MapR Technologies 21 地域名ビューの作成 0: jdbc:drill:zk=local> CREATE VIEW dfs.tmp.`area_info` AS SELECT . . . . . . . . . . . > t.data.`@code` code, . . . . . . . . . . . > t.data.`@name` name, . . . . . . . . . . . > t.data.`@level` level, . . . . . . . . . . . > t.data.`@parentCode` parent . . . . . . . . . . . > FROM ( . . . . . . . . . . . > SELECT . . . . . . . . . . . > FLATTEN(f.GET_STATS_DATA.STATISTICAL_DATA.CLASS_INF.CLASS_OBJ[2]. CLASS) data . . . . . . . . . . . > FROM . . . . . . . . . . . > dfs.`/tmp/stats_data_modified.json` f . . . . . . . . . . . > ) t; データをSQLで扱いやすくするために、ビューとして定義してみましょう。 ここでは地域名を取り出すためのビューと、統計データを取り出すためのビューを定義します。
  • 22. © 2014 MapR Technologies 22 統計データビューの作成 0: jdbc:drill:zk=local> CREATE VIEW dfs.tmp.`stats_data` AS SELECT . . . . . . . . . . . > t.data.`@tab` tab, . . . . . . . . . . . > t.data.`@cat01` did, . . . . . . . . . . . > t.data.`@area` area, . . . . . . . . . . . > t.data.$ val . . . . . . . . . . . > FROM ( . . . . . . . . . . . > SELECT . . . . . . . . . . . > FLATTEN(f.GET_STATS_DATA.STATISTICAL_DATA.DATA_INF.`VALUE`) data . . . . . . . . . . . > FROM . . . . . . . . . . . > dfs.`/tmp/stats_data_modified.json` f . . . . . . . . . . . > ) t;
  • 23. © 2014 MapR Technologies 23 地域名ビュー 0: jdbc:drill:zk=local> SELECT * FROM dfs.tmp.`area_info` LIMIT 10; +--------+--------+--------+---------+ | code | name | level | parent | +--------+--------+--------+---------+ | 00000 | 全国 | 1 | null | | 00001 | 全国市部 | 1 | null | | 00002 | 全国郡部 | 1 | null | | 01000 | 北海道 | 2 | 00000 | | 01001 | 北海道市部 | 3 | 01000 | | 01002 | 北海道郡部 | 3 | 01000 | | 01100 | 札幌市 | 3 | 01000 | | 01101 | 中央区 | 4 | 01100 | | 01102 | 北区 | 4 | 01100 | | 01103 | 東区 | 4 | 01100 | +--------+--------+--------+---------+ 10 rows selected (11.902 seconds)
  • 24. © 2014 MapR Technologies 24 統計データビュー 0: jdbc:drill:zk=local> SELECT * FROM dfs.tmp.`stats_data` LIMIT 10; +------+--------+--------+------------+ | tab | did | area | val | +------+--------+--------+------------+ | 020 | 00710 | 00000 | 128057352 | | 020 | 00710 | 00001 | 116156631 | | 020 | 00710 | 00002 | 11900721 | | 020 | 00710 | 01000 | 5506419 | | 020 | 00710 | 01001 | 4449360 | | 020 | 00710 | 01002 | 1057059 | | 020 | 00710 | 01100 | 1913545 | | 020 | 00710 | 01101 | 220189 | | 020 | 00710 | 01102 | 278781 | | 020 | 00710 | 01103 | 255873 | +------+--------+--------+------------+ 10 rows selected (87.308 seconds)
  • 25. © 2014 MapR Technologies 25 23区の人口増減率 0: jdbc:drill:> SELECT a.name 地域, b.val 人口, c.val 増減率 . . . . . . . > FROM (SELECT * FROM dfs.tmp.`area_info` t . . . . . . . > WHERE t.parent = '13100') a . . . . . . . > JOIN dfs.tmp.`stats_data` b . . . . . . . > ON a.code = b.area AND b.tab = '020' AND . . . . . . . > b.did = '00710’ . . . . . . . > JOIN dfs.tmp.`stats_data` c . . . . . . . > ON a.code = c.area AND c.tab = '102' AND . . . . . . . > c.did = '00710' AND c.val <> '-’ . . . . . . . > ORDER BY CAST(c.val AS DOUBLE) DESC; +-------+---------+-----------+ | 地域 | 人口 | 増減率 | +-------+---------+-----------+ | 中央区 | 122762 | 24.7594 | | 豊島区 | 284678 | 13.60536 | | 千代田区 | 47115 | 12.77467 | | 港区 | 205131 | 10.36796 | | 江東区 | 460819 | 9.49851 | | 足立区 | 683426 | 9.38194 | . | 板橋区 | 535824 | 2.43575 | | 目黒区 | 268330 | 1.61552 | | 北区 | 335544 | 1.55321 | | 中野区 | 314750 | 1.32732 | | 渋谷区 | 204492 | 0.56951 | +-------+---------+-----------+ 23 rows selected (547.958 seconds)
  • 26. © 2014 MapR Technologies 26 Q&A @mapr_japan maprjapan sales-jp@mapr.com お問い合わせはこちらまで MapR maprtech mapr-technologies オープンデータの詳細な手順は@nagixのブログもご覧下さい http://nagix.hatenablog.com

Notes de l'éditeur

  1. 全国の人口増減のデータを含む統計表の統計表ID「0003038586」が取得できました。 ではいよいよ、国勢調査のデータそのものをダウンロードしてみましょう、といきたいところですが、長くなってきたので次の記事で!
  2. これは「熊本」という文字列をISO-8859-1文字セットで扱おうとして失敗したという内容です。 DrillはSQLパーサの部分にApache Calciteを利用しているため、 Calciteのドキュメントを見てみましょう。
  3. 巨大な1つのフィールドにすべてのデータが入っているのがわかります(あまりにも大きいのでカットしています)。 これは、JSONデータの最上位のオブジェクトのキー「GET_STATS_LIST」と値に対応しているためです。実際のJSONファイルも見てみましょう。
  4. 最終的には分析の対象となるデータの「統計表ID」を知らないといけないのですが、 表題に「人口増減」という言葉が入っている統計表を探して、その統計表IDを取得しましょう。
  5. 東京都下では中央区の人口の伸びがダントツです。 特に日本橋エリアのマンション開発が進んだ影響のようですね。 豊島区の伸びは池袋近辺の中国人人口の増加によるものが大きいとのことです。 いかがでしたでしょうか。 Apache Drillの強みは、どんな形式のデータが格納されているかわからない状況で、 スキーマが事前に整っていなくても比較的柔軟にユーザーが思い通りにデータの探索をできることです。ぜひ手元の環境で試してみてください。