全部产品
云市场
云游戏

分析ECS自建Druid数据库数据

更新时间:2020-06-12 10:14:21

背景信息

Data Lake Analytics(简称DLA) 支持通过标准JDBC连接云服务器(Elastic Compute Service,简称ECS)上的自建Druid,并对其数据进行查询操作。

本文档介绍通过DLA连接并查询Druid数据。

前提条件

注意:DLA将通过VPC连接ECS自建Druid,应确保DLA与ECS所属Region相同。

DLA通过JDBC接口访问Druid,需要在Druid的配置中将druid.sql.enabledruid.sql.avatica.enable这两个属性设为true。其他SQL相关参数参见Druid文档

本文档中的示例使用Druid的示例数据Wikipedia作为测试数据,可以在Druid的web页面上通过向导加载。

druid示例数据

为了让DLA可以访问ECS自建Druid数据库,需要在ECS的安全组中添加安全组规则:授权100.104.0.0/16 IP地址段。

添加安全组规则时,端口选择Broker的端口(默认为8082),授权对象设置为100.104.0.0/16。

操作步骤

  1. 连接DLA

  2. 通过以下SQL在DLA中创建Druid Schema。

    1. CREATE DATABASE `my_druid_db`
    2. WITH DBPROPERTIES (
    3. catalog = 'druid',
    4. location = 'jdbc:avatica:remote:url=http://BROKER:8082/druid/v2/sql/avatica/',
    5. user = '******',
    6. password = '******',
    7. VPC_ID = 'vpc-*****',
    8. INSTANCE_ID = '********'
    9. )

    参数说明:

    • CATALOG:取值为druid,表示创建的是Druid Schema。
    • LOCATION: Druid的JDBC连接地址,参考Druid文档
    • USER: Druid的用户名。
    • PASSWORD: USER对应的密码。
    • VPC_ID: Broker所在的VPC ID。
    • INSTANCE_ID: Broker所在的ECS实例ID。
  3. 通过以下SQL在my_druid_db Schema中创建wikipedia表。

    1. CREATE EXTERNAL TABLE `wikipedia` (
    2. `__time` TIMESTAMP NULL COMMENT '',
    3. `added` BIGINT NULL COMMENT '',
    4. `channel` string NULL COMMENT '',
    5. `cityname` string NULL COMMENT '',
    6. `comment` string NULL COMMENT '',
    7. `countryisocode` string NULL COMMENT '',
    8. `countryname` string NULL COMMENT '',
    9. `deleted` BIGINT NULL COMMENT '',
    10. `delta` BIGINT NULL COMMENT '',
    11. `isanonymous` string NULL COMMENT '',
    12. `isminor` string NULL COMMENT '',
    13. `isnew` string NULL COMMENT '',
    14. `isrobot` string NULL COMMENT '',
    15. `isunpatrolled` string NULL COMMENT '',
    16. `namespace` string NULL COMMENT '',
    17. `page` string NULL COMMENT '',
    18. `regionisocode` string NULL COMMENT '',
    19. `regionname` string NULL COMMENT '',
    20. `user` string NULL COMMENT ''
    21. )
    22. TBLPROPERTIES (
    23. TABLE_MAPPING = 'druid.wikipedia',
    24. COLUMN_MAPPING = 'cityname,cityName; countryisocode,countryIsoCode; countryname,countryName; isanonymous,isAnonymous; isminor,isMinor; isnew,isNew; isrobot,isRobot; isunpatrolled,isUnpatrolled; regionisocode,regionIsoCode; regionname,regionName; '
    25. );

    也可以使用msck命令自动同步druid中的表结构:

    1. msck repair database my_druid_db;

    表创建成功后,您就可以通过SELECT在DLA中读取Druid中的数据。

    1. select * from wikipedia;