Druid 0.17 入门(3)—— 数据接入指南

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式。比如批处理数据的接入和实时流数据的接入。本文我们将介绍这几种数据接入方式。• 文件数据接入:从文件中加载批处理数据• 从Kafka中接入流数据:从Kafka中加载流数据• Hadoop数据接入:从Hadoop中加载批处理数据• 编写自己的数据接入规范:自定义新的接入规范本文主要介绍前两种最常用的数据接入方式。

1、Loading a file——加载文件


Druid提供以下几种方式加载数据:

  • 通过页面数据加载器
  • 通过控制台
  • 通过命令行
  • 通过Curl命令调用

1.1、数据加载器

Druid提供了一个示例数据文件,其中包含2015年9月12日发生的Wiki的示例数据。

此样本数据位于quickstart/tutorial/wikiticker-2015-09-12-sampled.json.gz

示例数据大概是这样:

{
  "timestamp":"2015-09-12T20:03:45.018Z",
  "channel":"#en.wikipedia",
  "namespace":"Main",
  "page":"Spider-Man's powers and equipment",
  "user":"foobar",
  "comment":"/* Artificial web-shooters */",
  "cityName":"New York",
  "regionName":"New York",
  "regionIsoCode":"NY",
  "countryName":"United States",
  "countryIsoCode":"US",
  "isAnonymous":false,
  "isNew":false,
  "isMinor":false,
  "isRobot":false,
  "isUnpatrolled":false,
  "added":99,
  "delta":99,
  "deleted":0,
}

Druid加载数据分为以下几种:

  • 加载文件
  • 从kafka中加载数据
  • 从hadoop中加载数据
  • 自定义加载方式

我们这样演示一下加载示例文件数据

1.1.1、进入localhost:8888 点击load data

微信图片_20220526224414.jpg

1.1.2、选择local disk

s.jpg

1.1.3、选择Connect data

微信图片_20220526224427.jpg

1.1.4、预览数据

Base directory输入quickstart/tutorial/

File filter输入 wikiticker-2015-09-12-sampled.json.gz

然后点击apply预览 就可以看见数据了 点击Next:parse data解析数据

微信图片_20220526224512.jpg

1.1.5、解析数据

可以看到json数据已经被解析了 继续解析时间

微信图片_20220526224515.jpg

1.1.6、解析时间

解析时间成功 之后两步是transform和filter 这里不做演示了 直接next

微信图片_20220526224519.jpg

1.1.7、确认Schema

这一步会让我们确认Schema 可以做一些修改

由于数据量较小 我们直接关掉Rollup 直接下一步

微信图片_20220526224524.jpg

1.1.8、设置分段

这里可以设置数据分段 我们选择hour next

微信图片_20220526224527.jpg

1.1.9、确认发布

微信图片_20220526224532.jpg

微信图片_20220526224536.jpg

1.1.10、发布成功 开始解析数据

微信图片_20220526224540.jpg

等待任务成功

微信图片_20220526224544.jpg

1.1.11、查看数据

选择datasources 可以看到我们加载的数据

可以看到数据源名称 Fully是完全可用 还有大小等各种信息

微信图片_20220526224547.jpg

1.1.12、查询数据

点击query按钮

我们可以写sql查询数据了 还可以将数据下载

微信图片_20220526224551.jpg

1.2 控制台

在任务视图中,单击Submit JSON task

微信图片_20220526224555.jpg

这将打开规格提交对话框,粘贴规范

{
  "type" : "index_parallel",
  "spec" : {
    "dataSchema" : {
      "dataSource" : "wikipedia",
      "dimensionsSpec" : {
        "dimensions" : [
          "channel",
          "cityName",
          "comment",
          "countryIsoCode",
          "countryName",
          "isAnonymous",
          "isMinor",
          "isNew",
          "isRobot",
          "isUnpatrolled",
          "metroCode",
          "namespace",
          "page",
          "regionIsoCode",
          "regionName",
          "user",
          { "name": "added", "type": "long" },
          { "name": "deleted", "type": "long" },
          { "name": "delta", "type": "long" }
        ]
      },
      "timestampSpec": {
        "column": "time",
        "format": "iso"
      },
      "metricsSpec" : [],
      "granularitySpec" : {
        "type" : "uniform",
        "segmentGranularity" : "day",
        "queryGranularity" : "none",
        "intervals" : ["2015-09-12/2015-09-13"],
        "rollup" : false
      }
    },
    "ioConfig" : {
      "type" : "index_parallel",
      "inputSource" : {
        "type" : "local",
        "baseDir" : "quickstart/tutorial/",
        "filter" : "wikiticker-2015-09-12-sampled.json.gz"
      },
      "inputFormat" :  {
        "type": "json"
      },
      "appendToExisting" : false
    },
    "tuningConfig" : {
      "type" : "index_parallel",
      "maxRowsPerSegment" : 5000000,
      "maxRowsInMemory" : 25000
    }
  }
}

微信图片_20220526224559.jpg

查看加载任务即可。

1.3 命令行

为了方便起见,Druid提供了一个加载数据的脚本

bin/post-index-task

我们可以运行命令

bin/post-index-task --file quickstart/tutorial/wikipedia-index.json --url http://localhost:8081

看到如下输出:

Beginning indexing data for wikipedia
Task started: index_wikipedia_2018-07-27T06:37:44.323Z
Task log:     http://localhost:8081/druid/indexer/v1/task/index_wikipedia_2018-07-27T06:37:44.323Z/log
Task status:  http://localhost:8081/druid/indexer/v1/task/index_wikipedia_2018-07-27T06:37:44.323Z/status
Task index_wikipedia_2018-07-27T06:37:44.323Z still running...
Task index_wikipedia_2018-07-27T06:37:44.323Z still running...
Task finished with status: SUCCESS
Completed indexing data for wikipedia. Now loading indexed data onto the cluster...
wikipedia loading complete! You may now query your data

查看加载任务即可。

1.4 CURL

我们可以通过直接调用CURL来加载数据

curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/tutorial/wikipedia-index.json http://localhost:8081/druid/indexer/v1/task

提交成功

{"task":"index_wikipedia_2018-06-09T21:30:32.802Z"}


2、Load from Apache Kafka——从Apache Kafka加载流数据


Apache Kafka是一个高性能的消息系统,由Scala 写成。是由Apache 软件基金会开发的一个开源消息系统项目。

Kafka 最初是由LinkedIn 开发,并于2011 年初开源。2012 年10 月从Apache Incubator 毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待(低延时)的平台。

更多kafka相关请查看Kafka入门宝典(详细截图版)

2.1 安装kafka

我们安装一个最新的kafka

curl -O https://archive.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz
tar -xzf kafka_2.12-2.1.0.tgz
cd kafka_2.12-2.1.0

启动kafka

./bin/kafka-server-start.sh config/server.properties

创建一个topic

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic wikipedia

2.2 将数据写入Kafka

向kafka的topic为wikipedia写入数据

cd quickstart/tutorial
gunzip -c wikiticker-2015-09-12-sampled.json.gz > wikiticker-2015-09-12-sampled.json

在kafka目录中运行命令 {PATH_TO_DRUID}替换为druid目录

export KAFKA_OPTS="-Dfile.encoding=UTF-8"
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic wikipedia < {PATH_TO_DRUID}/quickstart/tutorial/wikiticker-2015-09-12-sampled.json

2.3 加载kafka数据到Druid

druid加载kafka的数据也有多种方式

  • 数据加载器
  • 控制台
  • CURL

2.3.1 数据加载器

2.3.1.1 进入localhost:8888 点击load data

选择Apache Kafka并单击Connect data

微信图片_20220526224603.jpg

2.3.1.2 输入kafka服务器localhost:9092
输入topic wikipedia 可以预览数据 然后下一步

微信图片_20220526224607.jpg

2.3.1.3 解析数据

微信图片_20220526224611.jpg

2.3.1.4 解析时间戳 设置转换 设置过滤

微信图片_20220526224614.jpg微信图片_20220526224617.jpg微信图片_20220526224620.jpg

2.3.1.4 这步比较重要 确定统计的范围

微信图片_20220526224624.jpg

微信图片_20220526224627.jpg

2.3.1.5 发布

微信图片_20220526224631.jpg

2.3.1.6 等待任务完成

微信图片_20220526224635.jpg微信图片_20220526224637.jpg

2.3.1.7 去查询页面查看

微信图片_20220526224645.jpg

2.3.2 控制台

在任务视图中,单击Submit JSON supervisor以打开对话框。

微信图片_20220526224648.jpg

粘贴进去如下指令

{
  "type": "kafka",
  "spec" : {
    "dataSchema": {
      "dataSource": "wikipedia",
      "timestampSpec": {
        "column": "time",
        "format": "auto"
      },
      "dimensionsSpec": {
        "dimensions": [
          "channel",
          "cityName",
          "comment",
          "countryIsoCode",
          "countryName",
          "isAnonymous",
          "isMinor",
          "isNew",
          "isRobot",
          "isUnpatrolled",
          "metroCode",
          "namespace",
          "page",
          "regionIsoCode",
          "regionName",
          "user",
          { "name": "added", "type": "long" },
          { "name": "deleted", "type": "long" },
          { "name": "delta", "type": "long" }
        ]
      },
      "metricsSpec" : [],
      "granularitySpec": {
        "type": "uniform",
        "segmentGranularity": "DAY",
        "queryGranularity": "NONE",
        "rollup": false
      }
    },
    "tuningConfig": {
      "type": "kafka",
      "reportParseExceptions": false
    },
    "ioConfig": {
      "topic": "wikipedia",
      "inputFormat": {
        "type": "json"
      },
      "replicas": 2,
      "taskDuration": "PT10M",
      "completionTimeout": "PT20M",
      "consumerProperties": {
        "bootstrap.servers": "localhost:9092"
      }
    }
  }
}

2.3.3 CURL

我们也可以通过直接调用CURL来加载kafka数据

curl -XPOST -H'Content-Type: application/json' -d @quickstart/tutorial/wikipedia-kafka-supervisor.json http://localhost:8081/druid/indexer/v1/supervisor

静下心来,努力的提升自己,永远都没有错。更多实时计算相关博文,欢迎关注实时流式计算

相关文章
|
SQL 缓存 监控
SpringBoot整合阿里巴巴Druid数据源
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。 Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。 Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。 本文主要讲解如何整合Druid数据源及Druid常用配置项和详解
5238 1
SpringBoot整合阿里巴巴Druid数据源
|
4月前
|
Java 测试技术 数据库
springboot接入influxdb
springboot接入influxdb
60 1
|
6月前
|
XML 监控 druid
SpringBoot整合Druid数据源并配置监控
SpringBoot整合Druid数据源并配置监控
960 1
|
druid
springboot1集成druid数据源
springboot1集成druid数据源
|
SQL 监控 druid
springboot 集成Druid的监控数据库连接池的最佳实践
Druid是一种高性能的开源数据库连接池,它在Java应用程序中被广泛使用。Druid连接池提供了连接管理、连接池监控、SQL性能监控等功能,能够有效地管理数据库连接,并提供丰富的性能指标和监控报告。 Druid连接池的一些主要特点包括: 连接池管理:Druid可以帮助你管理数据库连接,包括连接的创建、销毁和重用。它提供了连接池配置选项,可以灵活地调整连接池的大小、最大等待时间、验证查询等参数。 监控数据统计:Druid连接池提供了丰富的监控指标,如连接数、活跃线程数、执行SQL次数、慢查询次数、错误次数等。通过这些统计数据,你可以实时了解连接池的使用情况和性能状况。 SQL性能监控:
2792 1
|
SQL 监控 druid
发生了什么!阿里DRUID、数据源、常见问题?
发生了什么!阿里DRUID、数据源、常见问题?
465 0
发生了什么!阿里DRUID、数据源、常见问题?
|
监控 druid Java
阿里、DRUID、数据源、延伸阅读、所需配置
阿里、DRUID、数据源、延伸阅读、所需配置
216 0
阿里、DRUID、数据源、延伸阅读、所需配置
|
监控 druid 大数据
注意:阿里Druid连接池监控的两个坑
image 阿里的Druid大家都知道是最好的连接池,其强大的监控功能是我们追求的重要特性。但在实际情况中也有不少坑,说下最近遇到的一个坑吧! 问题1:不断打印error级别的错误日志 session ip change too many 下面是其报错的关键源码 com.
3757 0
|
SQL 消息中间件 分布式计算
Druid入门(1)—— 快速入门实时分析利器-Druid_0.17
Druid入门(1)—— 快速入门实时分析利器-Druid_0.17
423 0
Druid入门(1)—— 快速入门实时分析利器-Druid_0.17
|
SQL JSON druid
Druid 0.17入门(4)—— 数据查询方式大全
本文介绍Druid查询数据的方式,首先我们保证数据已经成功载入。 Druid查询基于HTTP,Druid提供了查询视图,并对结果进行了格式化。 Druid提供了三种查询方式,SQL,原生JSON,CURL。
180 0
Druid 0.17入门(4)—— 数据查询方式大全
下一篇
无影云桌面