apache drill で json 形式の オープンデータを分析してみる - db tech showcase tokyo...

56
® © 2015 MapR Technologies 1 ® © 2015 MapR Technologies Apache Drill JSON 形式の オープンデータを分析してみる 草薙 昭彦 MapR Technologies 2015 6 11

Upload: mapr-technologies-japan

Post on 04-Aug-2015

5.699 views

Category:

Data & Analytics


8 download

TRANSCRIPT

1. 2015 MapR Technologies 1 2015 MapR Technologies Apache Drill JSON MapR Technologies 2015 6 11 2. 2015 MapR Technologies 2 Apache Drill 1.0 (5/19) http://drill.apache.org 3. 2015 MapR Technologies 3 Apache Drill Drill (e-Stat) 4. 2015 MapR Technologies 4 2015 MapR Technologies Apache Drill 5. 2015 MapR Technologies 5 1980 2000 20101990 2020 80% : Human-Computer Interaction & Knowledge Discovery in Complex Unstructured, Big Data 6. 2015 MapR Technologies 6 1980 2000 20101990 2020 DB GBTB TBPB 7. 2015 MapR Technologies 7 SQL SQL NoSQL SQL BI (TableauMicroStrategy ) HDFS (ParquetJSON ) HBase 8. 2015 MapR Technologies 8 Industry's First Schema-free SQL engine for Big Data 9. 2015 MapR Technologies 9 & BI ITBI BI ITBI ITBI BI IT ITETL 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*FROMdfs.yelp.`business.json`! - - Hive - HBase - DFS (Text, Parquet, JSON) - HBase/MapR-DB - Hive HCatalog/ - Hadoop API 14. 2015 MapR Technologies 14 (drillbit) MapReduceSparkTez 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 drillbitdrillbit 2. drillbit 5. * CTAS (CREATE TABLE AS SELECT) 14 17. 2015 MapR Technologies 17 drillbit SQL Hive HBase MongoDB DFS RPC 18. 2015 MapR Technologies 18 2015 MapR Technologies Drill (e-Stat) 19. 2015 MapR Technologies 19 e-Stat API http://www.e-stat.go.jp/api/ 20. 2015 MapR Technologies 20 e-Stat API ID API http://www.e-stat.go.jp/api/e-stat-manual/ http://www.e-stat.go.jp/api/api-data/ 21. 2015 MapR Technologies 21 Drill JDK 7 $ wget http://getdrill.org/drill/download/apache-drill-1.0.0.tar.gz! $ tar -xvzf apache-drill-1.0.0.tar.gz! $ apache-drill-1.0.0/bin/drill-embedded! 0: jdbc:drill:zk=local> 22. 2015 MapR Technologies 22 00200521 ID2010 $ curl -o stats_list.json "http://api.e-stat.go.jp/rest/2.0/app/json/ getStatsList?appId=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&surveyYea rs=2010&statsCode=00200521" 23. 2015 MapR Technologies 23 FROM dfs.`` JSON1 0: jdbc:drill:zk=local> SELECT * FROM dfs.`/tmp/stats_list.json` t;! +-------------------------------------------------------------------------------- -------------------------------------------------------------------------+! | |! +-------------------------------------------------------------------------------- -------------------------------------------------------------------------+! | {"RESULT":{"STATUS":0,"ERROR_MSG":"","DATE":"2015-05-21T19:01:17 .540+09:00"},"PARAMETER":{"LANG":"J","SURVEY_YEARS":2010,"STATS_CODE":"0 |! +-------------------------------------------------------------------------------- -------------------------------------------------------------------------+! 1 row selected (1.257 seconds) 24. 2015 MapR Technologies 24 JSON {! "GET_STATS_LIST":{! "RESULT":{ ! "STATUS":0,! "ERROR_MSG":"u6B63u5E38...",! "DATE":"2015-05-21T19:01:17..."! },! "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",...},! {"@id":"0003033023",...},! {"@id":"0003033024",...},! ...! ]! }! }! } 25. 2015 MapR Technologies 25 JSON {! "GET_STATS_LIST":{! "RESULT":{! "STATUS":0,! "ERROR_MSG":"u6B63u5E38...",! "DATE":"2015-05-21T19:01:17..."! },! "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",...},! {"@id":"0003033023",...},! {"@id":"0003033024",...},! ...! ]! }! }! } 26. 2015 MapR Technologies 26 KVGEN() [! {"key":,"value":},! {"key":,"value":},! ...! ] :,! :,! ... 27. 2015 MapR Technologies 27 FLATTEN() 0: jdbc:drill:zk=local> SELECT FLATTEN(z) FROM table;! +-----------+! | z |! +-----------+! | 1 |! | 2 |! | 3 |! +-----------+! {! "z":[1,2,3]! } 28. 2015 MapR Technologies 28 GET_STATS_LISTKVGEN()FLATTEN() 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_STATS_LIST)) FROM dfs.`/tmp/st ats_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":"002005 21","DATA_FORMAT":"J","RESULT_INF":{},"TABLE_INF":[]}} |! | {"key":"DATALIST_INF","value":{"NUMBER":356,"RESULT_INF":{"FROM_NUMBER":1,"TO_N UMBER":356},"TABLE_INF":[{"@id":"0003033021","STAT_ |! +-------------------------------------------------------------------------------- -------------------------------------------------------+! 29. 2015 MapR Technologies 29 JSON {! "GET_STATS_LIST":{! "RESULT":{! "STATUS":0,! "ERROR_MSG":"u6B63u5E38...",! "DATE":"2015-05-21T19:01:17..."! },! "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",...},! {"@id":"0003033023",...},! {"@id":"0003033024",...},! ...! ]! }! }! } 30. 2015 MapR Technologies 30 GET_STATS_LIST.DATALIST_INF 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_STATS_LIST.DATALIST_INF)) FROM dfs.`/tmp/stats_list.json` t;! Error: SYSTEM ERROR: org.apache.drill.common.exceptions.DrillRuntimeException: Ma ppify/kvgen does not support heterogeneous value types. All values in the input m ap must be of the same type. The field [`unknown`] has a differing type [minor_ty pe: LATE! mode: OPTIONAL! ].! ! Fragment 0:0! ! [Error Id: e5f8f642-d03d-4d95-b2d9-e2b47289dee6 on 192.168.111.11:31010] (state=, code=0)! 31. 2015 MapR Technologies 31 {! "GET_STATS_LIST":{! "RESULT":{! "STATUS":0,! "ERROR_MSG":"u6B63u5E38...",! "DATE":"2015-05-21T19:01:17..."! },! "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",...},! {"@id":"0003033023",...},! {"@id":"0003033024",...},! ...! ]! }! }! } KVGEN() 32. 2015 MapR Technologies 32 GET_STATS_LIST.DATALIST_INF.TABLE_INF TABLE_INF 0: jdbc:drill:zk=local> SELECT t.GET_STATS_LIST.DATALIST_INF.TABLE_INF[0] FROM df s.`/tmp/stats_list.json` t;! +-------------------------------------------------------------------------------- ...! ----------------------------------+! | {"@id":"0003033021","STAT_NAME":{"@code":"00200521","$":""},"GOV_ORG":{" @code":"00200","$":""},"STATISTICS_NAME":"22 "," TITLE":{"@no":"00110","$":"()() "},"CYCLE":"-","SURVEY_DATE":201010,"OPEN_DATE":"2011-06-2 9","SMALL_AREA":0,"MAIN_CATEGORY":{"@code":"02","$":""},"SUB_CATEGORY":{" @code":"01","$":""},"OVERALL_TOTAL_NUMBER":1980,"UPDATED_DATE":"2011-08-02"} |! +-------------------------------------------------------------------------------- ...! ----------------------------------+! 33. 2015 MapR Technologies 33 2010 0: jdbc:drill:zk=local> SELECT! . . . . . . . . . . . > d.table_inf.`@id`, ID! . . . . . . . . . . . > d.table_inf.TITLE.$ ! . . . . . . . . . . . > FROM (! . . . . . . . . . . . > SELECT! . . . . . . . . . . . > FLATTEN(t.GET_STATS_LIST.DATALIST_INF.TABLE_INF) tabl e_inf! . . . . . . . . . . . > FROM dfs.`/tmp/stats_list.json` t! . . . . . . . . . . . > ) d;! +------------+------------------------------------------------------------------+! | EXPR$0 | EXPR$1 |! +------------+------------------------------------------------------------------+! | 0003033021 | ()() |! | 0003033022 | ()() |! | 0003033023 | ()()()15 |! ...! +------------+------------------------------------------------------------------+! 356 rows selected (0.608 seconds)! 34. 2015 MapR Technologies 34 ID 0: jdbc:drill:zk=local> SELECT! . . . . . . . . . . . > d.table_inf.`@id`,! . . . . . . . . . . . > d.table_inf.TITLE.$! . . . . . . . . . . . > FROM (! . . . . . . . . . . . > SELECT! . . . . . . . . . . . > FLATTEN(t.GET_STATS_LIST.DATALIST_INF.TABLE_INF) tabl e_inf! . . . . . . . . . . . > FROM dfs.`/tmp/stats_list.json` t! . . . . . . . . . . . > ) d! . . . . . . . . . . . > WHERE d.TABLE_INF.TITLE.$ LIKE _UTF16'%%';! +-------------+-----------------------------------------------------------------+! | EXPR$0 | EXPR$1 |! +-------------+-----------------------------------------------------------------+! | 0003038586 | |! +-------------+-----------------------------------------------------------------+! 1 row selected (0.72 seconds)! 35. 2015 MapR Technologies 35 2010 ID0003038586 IDID $ curl -o /tmp/meta_info.json "http://api.e-stat.go.jp/rest/2.0/app/j son/getMetaInfo?appId=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&statsD ataId=0003038586" 36. 2015 MapR Technologies 36 jq JSON Drill : JSON jq http://nagix.hatenablog.com/entry/2015/06/03/152934 JSONjq $ jq '(.. | objects | .CLASS | objects) |= [.]' /tmp/meta_info.json > /tmp/meta_info_modified.json 37. 2015 MapR Technologies 37 JSON {! "GET_META_INFO":{! "RESULT":{ ! "STATUS":0,! "ERROR_MSG":"u6B63u5E38...",! "DATE":"2015-05-21T19:01:17..."! },! "PARAMETER":{ ! "LANG":"J",! "STATS_DATA_ID":"0003038586",! "DATA_FORMAT":"J"! },! "METADATA_INF":{ ! "TABLE_INF":{! "@id":"0003038586",! "STAT_NAME":{! "@code":"00200521",! "$":"u56FDu52E2u8ABF..."! },! ...! },! "CLASS_INF":{! "CLASS_OBJ":[! {! "@id":"tab",! "@name":"u8868u7AE0...",! "CLASS":[! {"@code":"020",...},! {"@code":"100",...},! ...! ]! },! ...! ]! }! }! }! } 38. 2015 MapR Technologies 38 GET_META_INFOKVGEN()FLATTEN() 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_META_INFO)) FROM dfs.`/tmp/met a_info_modified.json` t;! +------------------------------------------------------------------------------+! | |! +------------------------------------------------------------------------------+! | {"key":"RESULT","value":{"STATUS":0,"ERROR_MSG":"","DATE":"20 |! | {"key":"PARAMETER","value":{"LANG":"J","STATS_DATA_ID":"0003038586","DATA_FO |! | {"key":"METADATA_INF","value":{"TABLE_INF":{"@id":"0003038586","STAT_NAME":{ |! +------------------------------------------------------------------------------+! 3 rows selected (0.367 seconds)! 39. 2015 MapR Technologies 39 GET_META_INFO.METADATA_INF 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_META_INFO.METADATA_INF)) FROM dfs.`/tmp/meta_info_modified.json` t;! +------------------------------------------------------------------------------+! | |! +------------------------------------------------------------------------------+! | {"key":"TABLE_INF","value":{"@id":"0003038586","STAT_NAME":{"@code":"0020052 |! | {"key":"CLASS_INF","value":{"STAT_NAME":{},"GOV_ORG":{},"TITLE":{},"MAIN_CAT |! +------------------------------------------------------------------------------+! 2 rows selected (0.237 seconds)! 40. 2015 MapR Technologies 40 GET_META_INFO.METADATA_INF.CLASS_INF 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_META_INFO.METADATA_INF.CLASS_I NF)) FROM dfs.`/tmp/meta_info_modified.json` t;! +------------------------------------------------------------------------------+! | |! +------------------------------------------------------------------------------+! | {"key":"CLASS_OBJ","value":[{"@id":"tab","@name":"","CLASS":[{"@code": |! +------------------------------------------------------------------------------+! 1 row selected (5.208 seconds)! 41. 2015 MapR Technologies 41 CLASS_OBJ FLATTEN() 0: jdbc:drill:zk=local> SELECT FLATTEN(t.GET_META_INFO.METADATA_INF.CLASS_INF.CLA SS_OBJ) FROM dfs.`/tmp/meta_info_modified.json` t;! +------------------------------------------------------------------------------+! | |! +------------------------------------------------------------------------------+! | {"@id":"tab","@name":"","CLASS":[{"@code":"020","@name":"","@level" |! | {"@id":"cat01","@name":"2010","CLASS":[{"@code":"00710","@name" |! | {"@id":"area","@name":"2010","CLASS":[{"@code":"00000","@name":"","@l |! | {"@id":"time","@name":"()","CLASS":[{"@code":"2010000000","@name":"2 |! +------------------------------------------------------------------------------+! 4 row selected (0.148 seconds)! 42. 2015 MapR Technologies 42 CLASS CLASS_OBJCLASSFLATTEN() 0: jdbc:drill:zk=local> SELECT FLATTEN(t.GET_META_INFO.METADATA_INF.CLASS_INF.CLA SS_OBJ[0].CLASS) FROM dfs.`/tmp/meta_info_modified.json` t;! +--------------------------------------------------------------------+! | EXPR$0 |! +--------------------------------------------------------------------+! | {"@code":"020","@name":"","@level":"","@unit":""} |! | {"@code":"100","@name":"17","@level":"","@unit":""} |! | {"@code":"101","@name":"1722","@level":"","@unit":""} |! | {"@code":"102","@name":"1722","@level":"","@unit":""} |! | {"@code":"103","@name":"","@level":"","@unit":"km"} |! | {"@code":"104","@name":"","@level":""} |! +--------------------------------------------------------------------+! 6 rows selected (0.166 seconds)! 43. 2015 MapR Technologies 43 ID0003038586 020,102,104 jq curl -o stats_data.json "http://api.e-stat.go.jp/rest/2.0/app/json/ge tStatsData?appId=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&statsDataId =0003038586&cdTab=020,102,104"! $ jq '(.. | objects | .CLASS | objects) |= [.]' /tmp/stats_data.json > /tmp/stats_data_modified.json 44. 2015 MapR Technologies 44 GET_STATS_DATAKVGEN()FLATTEN() 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_STATS_DATA)) FROM dfs.`/tmp/st ats_data_modified.json` t;! +------------------------------------------------------------------------------+! | |! +------------------------------------------------------------------------------+! | {"key":"RESULT","value":{"STATUS":0,"ERROR_MSG":"","DATE":"20 |! | {"key":"PARAMETER","value":{"LANG":"J","STATS_DATA_ID":"0003038586","NARROWI |! | {"key":"STATISTICAL_DATA","value":{"NARROWING_COND":{},"RESULT_INF":{"TOTAL_ |! +------------------------------------------------------------------------------+! 3 rows selected (0.495 seconds)! 45. 2015 MapR Technologies 45 GET_STATS_DATA.STATISTICAL_DATA 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_STATS_DATA.STATISTICAL_DATA)) FROM dfs.`/tmp/stats_data_modified.json` t;! +------------------------------------------------------------------------------+! | |! +------------------------------------------------------------------------------+! | {"key":"RESULT_INF","value":{"TOTAL_NUMBER":19356,"FROM_NUMBER":1,"TO_NUMBER |! | {"key":"TABLE_INF","value":{"@id":"0003038586","STAT_NAME":{"@code":"0020052 |! | {"key":"CLASS_INF","value":{"STAT_NAME":{},"GOV_ORG":{},"TITLE":{},"MAIN_CAT |! | {"key":"DATA_INF","value":{"STAT_NAME":{},"GOV_ORG":{},"TITLE":{},"MAIN_CATE |! +------------------------------------------------------------------------------+! 4 rows selected (0.429 seconds)! 46. 2015 MapR Technologies 46 GET_STATS_DATA.STATISTICAL_DATA.DATA_INF 0: jdbc:drill:zk=local> SELECT FLATTEN(KVGEN(t.GET_STATS_DATA.STATISTICAL_DATA.DA TA_INF)) FROM dfs.`/tmp/stats_data_modified.json` t;! +------------------------------------------------------------------------------+! | |! +------------------------------------------------------------------------------+! | {"key":"NOTE","value":[{"@char":"***","$":""},{"@char":"-","$" |! | {"key":"VALUE","value":[{"$":"128057352","@tab":"020","@cat01":"00710","@are |! +------------------------------------------------------------------------------+! 2 rows selected (199.208 seconds)! 47. 2015 MapR Technologies 47 VALUEFLATTEN() 0: jdbc:drill:zk=local> SELECT FLATTEN(t.GET_STATS_DATA.STATISTICAL_DATA.DATA_INF .`VALUE`) FROM dfs.`/tmp/stats_data_modified.json` t;! +-------------------------------------------------------------------------------- -------------------+! | EXPR$0 |! +-------------------------------------------------------------------------------- -------------------+! | {"@tab":"020","@cat01":"00710","@area":"00000","@time":"2010000000","@unit":" ","$":"128057352"} |! | {"@tab":"020","@cat01":"00710","@area":"00001","@time":"2010000000","@unit":" ","$":"116156631"} |! | ... |! +-------------------------------------------------------------------------------- -------------------+! 48. 2015 MapR Technologies 48 area_info 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.C LASS_OBJ[2].CLASS) data! . . . . . . . . . . . > FROM! . . . . . . . . . . . > dfs.`/tmp/stats_data_modified.json` f! . . . . . . . . . . . > ) t;! 49. 2015 MapR Technologies 49 area_info 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)! 50. 2015 MapR Technologies 50 stats_data 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.`V ALUE`) data! . . . . . . . . . . . > FROM! . . . . . . . . . . . > dfs.`/tmp/stats_data_modified.json` f! . . . . . . . . . . . > ) t;! 51. 2015 MapR Technologies 51 area_info 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)! 52. 2015 MapR Technologies 52 /tmp.view.drill JSON $ ls /tmp! area_info.view.drill! stats_data_modified.view.drill! 53. 2015 MapR Technologies 53 SQL 5 0: jdbc:drill:zk=local> SELECT a.name , b.val ! . . . . . . . . . . . > FROM dfs.tmp.`area_info` a! . . . . . . . . . . . > JOIN dfs.tmp.`stats_data` b! . . . . . . . . . . . > ON a.code = b.area AND b.tab = '102' AND! . . . . . . . . . . . > b.did = '00710' AND b.val '-'! . . . . . . . . . . . > ORDER BY CAST(b.val AS DOUBLE) DESC LIMIT 5;! +-----------------+-----------+! | | |! +-----------------+-----------+! | ( 421 ) | 11710 |! | ( 463 ) | 64.137 |! | | 35.31066 |! | | 24.7594 |! | ( 483 ) | 22.32891 |! +-----------------+-----------+! 54. 2015 MapR Technologies 54 1,0005 0: jdbc:drill:zk=local> SELECT a.name , b.val , c.val ! . . . . . . . . . . . > FROM dfs.tmp.`area_info` a! . . . . . . . . . . . > JOIN dfs.tmp.`stats_data` b! . . . . . . . . . . . > ON a.code = b.area AND b.tab = '102' AND! . . . . . . . . . . . > b.did = '00710' AND b.val '-'! . . . . . . . . . . . > JOIN dfs.tmp.`stats_data` c! . . . . . . . . . . . > ON a.code = c.area AND c.tab = '104' AND ! . . . . . . . . . . . > c.did = '00710' AND CAST(c.val AS DOUBLE) > 1000.0! . . . . . . . . . . . > ORDER BY CAST(b.val AS DOUBLE) LIMIT 5;! +----------------+-----------+----------+! | | | |! +----------------+-----------+----------+! | | -8.13079 | 16594.8 |! | ( 564 ) | -7.77341 | 1549.0 |! | ( 422 ) | -7.35908 | 1023.6 |! | | -7.25784 | 1178.1 |! | | -5.86335 | 1196.1 |! +----------------+-----------+----------+! ! 55. 2015 MapR Technologies 55 Apache Drill JSON e-Stat Apache Drill http://nagix.hatenablog.com/entry/2015/05/21/232526 56. 2015 MapR Technologies 56 Q&A @mapr_japan maprjapan [email protected] MapR maprtech mapr-technologies