Data Lake Analytics(簡稱DLA) 支持通過標(biāo)準(zhǔn)JDBC連接云服務(wù)器(Elastic Compute Service,簡稱ECS)上的自建Druid,并對其數(shù)據(jù)進(jìn)行查詢操作。
本文檔介紹通過DLA連接并查詢Druid數(shù)據(jù)。
前提條件
DLA將通過VPC連接ECS自建Druid,應(yīng)確保DLA與ECS所屬Region相同。
DLA通過JDBC接口訪問Druid,需要在Druid的配置中將druid.sql.enable
和druid.sql.avatica.enable
這兩個屬性設(shè)為true。其他SQL相關(guān)參數(shù)參見Druid文檔。
本文檔中的示例使用Druid的示例數(shù)據(jù)Wikipedia作為測試數(shù)據(jù),可以在Druid的Web頁面上通過向?qū)Ъ虞d。
為了讓DLA可以訪問ECS自建Druid數(shù)據(jù)庫,需要在ECS的安全組中添加安全組規(guī)則:授權(quán)100.104.0.0/16 IP地址段。
添加安全組規(guī)則時,端口選擇Broker的端口(默認(rèn)為8082),授權(quán)對象設(shè)置為100.104.0.0/16。
操作步驟
- 鏈接DLA
- 通過以下SQL在DLA中創(chuàng)建Druid Schema。
CREATE DATABASE `my_druid_db` WITH DBPROPERTIES ( catalog = 'druid', location = 'jdbc:avatica:remote:url=http://BROKER:8082/druid/v2/sql/avatica/', user = '******', password = '******', VPC_ID = 'vpc-*****', INSTANCE_ID = '********' )
參數(shù)說明:
- CATALOG:取值為druid,表示創(chuàng)建的是Druid Schema。
- LOCATION: Druid的JDBC連接地址,參見Druid文檔。
- USER: Druid的用戶名。
- PASSWORD: USER對應(yīng)的密碼。
- VPC_ID: Broker所在的VPC ID。
- INSTANCE_ID: Broker所在的ECS實(shí)例ID。
-
通過以下SQL在my_druid_db Schema中創(chuàng)建wikipedia表。
CREATE EXTERNAL TABLE `wikipedia` ( `__time` TIMESTAMP NULL COMMENT '', `added` BIGINT NULL COMMENT '', `channel` string NULL COMMENT '', `cityname` string NULL COMMENT '', `comment` string NULL COMMENT '', `countryisocode` string NULL COMMENT '', `countryname` string NULL COMMENT '', `deleted` BIGINT NULL COMMENT '', `delta` BIGINT NULL COMMENT '', `isanonymous` string NULL COMMENT '', `isminor` string NULL COMMENT '', `isnew` string NULL COMMENT '', `isrobot` string NULL COMMENT '', `isunpatrolled` string NULL COMMENT '', `namespace` string NULL COMMENT '', `page` string NULL COMMENT '', `regionisocode` string NULL COMMENT '', `regionname` string NULL COMMENT '', `user` string NULL COMMENT '' ) TBLPROPERTIES ( TABLE_MAPPING = 'druid.wikipedia', COLUMN_MAPPING = 'cityname,cityName; countryisocode,countryIsoCode; countryname,countryName; isanonymous,isAnonymous; isminor,isMinor; isnew,isNew; isrobot,isRobot; isunpatrolled,isUnpatrolled; regionisocode,regionIsoCode; regionname,regionName; ' );
也可以使用msck命令自動同步druid中的表結(jié)構(gòu):
msck repair database my_druid_db;
表創(chuàng)建成功后,您就可以通過SELECT在DLA中讀取Druid中的數(shù)據(jù)。
select * from wikipedia;