ApacheDurid(入门安装数据摄取查询集成SpringBoot)

一个现代化的云原生,流原生,分析型数据库Druid是为快速查询和快速摄入数据的工作流而设计的。Druid强在有强大的UI,运行时可操作查询,和高性能并发处理。Druid可以被视为一个满足多样化用户场景的数据仓库的开源替代品。

轻松与现有的数据管道集成Druid可以从消息总线流式获取数据(如Kafka,AmazonKinesis),或从数据湖批量加载文件(如HDFS,AmazonS3和其他同类数据源)。

比传统方案快100倍的性能

解锁新的工作流Druid为Clickstream,APM(应用性能管理系统),supplychain(供应链),网络遥测,数字营销和其他事件驱动形式的场景解锁了新的查询方式和工作流。Druid专为实时和历史数据的快速临时查询而构建。

可以部署在AWS/GCP/Azure,混合云,k8s和租用服务器上Druid可以部署在任Linux环境中,无论是内部环境还是云环境。部署Druid是非常easy的:通过添加或删减服务来扩容缩容。

ApacheDruid适用于对实时数据提取,高性能查询和高可用要求较高的场景。因此,Druid通常被作为一个具有丰富GUI的分析系统,或者作为一个需要快速聚合的高并发API的后台。Druid更适合面向事件数据。

比较常见的使用场景

Druid常常用来收集和分析网络流数据。Druid被用于管理以任意属性切分组合的流数据。Druid能够提取大量网络流记录,并且能够在查询时快速对数十个属性组合和排序,这有助于网络流分析。这些属性包括一些核心属性,如IP和端口号,也包括一些额外添加的强化属性,如地理位置,服务,应用,设备和ASN。Druid能够处理非固定模式,这意味着你可以添加任何你想要的属性。

Druid经常用于商业智能场景。公司部署Druid去加速查询和增强应用。和基于Hadoop的SQL引擎(如Presto或Hive)不同,Druid为高并发和亚秒级查询而设计,通过UI强化交互式数据查询。这使得Druid更适合做真实的可视化交互分析。

如果您的使用场景符合以下的几个特征,那么Druid是一个非常不错的选择:

如果您的使用场景符合以下特征,那么使用Druid可能是一个不好的选择:

ES:最大的特点是使用了倒排索引解决索引问题。根据研究,ES在数据获取和聚集用的资源比在Druid高。框架选型:

Druid同时支持流式和批量数据摄入。Druid通常通过像Kafka这样的消息总线(加载流式数据)或通过像HDFS这样的分布式文件系统(加载批量数据)来连接原始数据源。Druid通过Indexing处理将原始数据以segment的方式存储在数据节点,segment是一种查询优化的数据结构。

数据副本Druid根据配置的副本数创建多个数据副本,所以单机失效不会影响Druid的查询。独立服务Druid清晰的命名每一个主服务,每一个服务都可以根据使用情况做相应的调整。服务可以独立失败而不影响其他服务的正常运行。例如,如果数据摄入服务失效了,将没有新的数据被加载进系统,但是已经存在的数据依然可以被查询。自动数据备份Druid自动备份所有已经indexed的数据到一个文件系统,它可以是分布式文件系统,如HDFS。你可以丢失所有Druid集群的数据,并快速从备份数据中重新加载。滚动更新通过滚动更新,你可以在不停机的情况下更新Druid集群,这样对用户就是无感知的。所有Druid版本都是向后兼容。

获取Druid安装包有以下几种方式

1CPU,4GB内存启动命令:bin/start-nano-quickstart配置目录:conf/druid/single-server/nano-quickstart

4CPU,16GB内存启动命令:bin/start-micro-quickstart配置目录:conf/druid/single-server/micro-quickstart

8CPU,64GB内存(~i3.2xlarge)启动命令:bin/start-small配置目录:conf/druid/single-server/small

16CPU,128GB内存(~i3.4xlarge)启动命令:bin/start-medium配置目录:conf/druid/single-server/medium

32CPU,256GB内存(~i3.8xlarge)启动命令:bin/start-large配置目录:conf/druid/single-server/large

64CPU,512GB内存(~i3.16xlarge)启动命令:bin/start-xlarge配置目录:conf/druid/single-server/xlarge

Java8(8u92+)Linux,MacOSX,或者其他的类UnixOS(Windows是不支持的)安装Docker环境安装Docker-compose环境

Druid包括几个单服务配置示例,以及使用这些配置启动Druid进程的脚本。如果您在笔记本电脑等小型机器上运行以进行快速评估,那么micro-quickstart配置是一个不错的选择,适用于4CPU/16GBRAM环境。如果您计划在教程之外使用单机部署进行进一步评估,我们建议使用比micro-quickstart更大的配置。虽然为大型单台计算机提供了示例配置,但在更高规模下,我们建议在集群部署中运行Druid,以实现容错和减少资源争用。

安装推荐Imply方式,Imply方式出了提供druid组件,还有图形化、报表等功能

因为启动druid需要用到perl环境,需要安装下

选择与自己系统相匹配的版本,我的是Centos764位的,所以如果是我的话我会选择此版本,要记住的你们下载的话选择的是以tar.gz结尾的。

上传文件,解压目录

mkdir/usr/local/javatar-zxvfjdk-8u301-linux-x64.tar.gz配置环境变量配置环境变量,修改profile文件并加入如下内容

source/etc/profile检查环境

#创建imply安装目录mkdir/usr/local/imply#解压implytar-zxvfimply-2021.05-1.tar.gz环境准备进入imply-2021.05-1目录后

#进入imply目录cdimply-2021.05-1快速启动使用本地存储、默认元数据存储derby,自带zookeeper启动,来体验下druid

#创建日志目录mkdirlogs#使用命令启动nohupbin/supervise-cconf/supervise/quickstart.conf>logs/quickstart.log2>&1&查看日志通过quickstart.log来查看impl启动日志

访问Imply可以通过访问9095端口来访问imply的管理页面

我们导入演示案例种的演示文件

因为我们是通过imply安装的,在Basedirectory输入绝对路径/usr/local/imply/imply-2021.05-1/dist/druid/quickstart/tutorial,Filefilter输入wikiticker-2015-09-12-sampled.json.gz,并选择apply应用配置,我们数据已经加载进来了

在这里可以新增虚拟列,将一个列的数据转换成另一个虚拟列,这里我们没有设置,直接跳过

这里我们使用docker-compose的方式启动kafka

#运行kafka生产者发送消息./kafka-console-producer.sh--broker-list192.168.64.173:9092--topictest发送的数据如下

编写代码编写代码发送消息到kafka中

关闭集群

准备大量数据提供查询,我们插入1万条随机打车数据

#创建查询目录mkdirquery#编辑查询的JSONviquery/filter1.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"month","aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"selector","dimension":"status","value":1},"intervals":["2021-06-07/2022-06-07"]}参数解释

执行查询命令在命名行中执行下面的命令会将查询json发送到对应的broker中进行查询--data-binary指定的查询json的路径

druid查询采用的是HTTPRESTFUL方式,REST接口负责接收客户端的查询请求,客户端只需要将查询条件封装成JSON格式,通过HTTP方式将JSON查询条件发送到broker节点,查询成功会返回JSON格式的结果数据。了解一下druid提供的查询类型

viquery/topN.json{"queryType":"topN","dataSource":"taxi_message","dimension":"local","threshold":2,"metric":"age","granularity":"Quarter","aggregations":[{"type":"longMin","name":"age","fieldName":"age"}],"filter":{"type":"selector","dimension":"sex","value":"也"},"intervals":["2021-06-07/2022-06-07"]}执行查询

在实际应用中经常需要进行分组查询,等同于sql语句中的Groupby查询,如果对单个维度和指标进行分组聚合计算,推荐使用topN查询,能够获得更高的查询性能,分组查询适合多维度,多指标聚合查询

viquery/groupBy.json{"queryType":"groupBy","dataSource":"taxi_message","granularity":"Quarter","dimensions":["sex"],"aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"bound","dimension":"age","lower":"21","upper":"31","alphaNumeric":true},"intervals":["2021-06-07/2022-06-07"]}执行查询

在介绍具体的查询之前,我们先来了解一下各种查询都会用到的基本组件,如Filter,Aggregator,Post-Aggregator,Query,Interval等,每种组件都包含很多的细节

Filter就是过滤器,在查询语句中就是一个JSON对象,用来对维度进行筛选和过滤,表示维度满足Filter的行是我们需要的数据,类似sql中的where字句。Filter包含的类型如下:选择过滤器SelectorFilter的功能类似于SQL中的wherekey=value,它的json示例如下

"Filter":{"type":"selector","dimension":dimension_name,"value":target_value}使用案例

viquery/filter1.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"month","aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"selector","dimension":"status","value":1},"intervals":["2021-06-07/2022-06-07"]}正则过滤器RegexFilter允许用户使用正则表达式进行维度的过滤筛选,任何java支持的标准正则表达式druid都支持,它的JSON格式如下:

"filter":{"type":"regex","dimension":dimension_name,"pattern":regex}使用案例,我们搜索姓名包含数字的的用户进行聚合统计

viquery/filter2.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"month","aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"regex","dimension":"username","pattern":"[0-9]{1,}"},"intervals":["2021-06-07/2022-06-07"]}执行查询

"filter":{"type":"and","fields":[filter1,filter2]}"filter":{"type":"or","fields":[filter1,filter2]}"filter":{"type":"not","fields":[filter]}使用案例,我们查询每一个月,进行打车并且是女性的数量

viquery/filter3.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"month","aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"and","fields":[{"type":"selector","dimension":"status","value":1},{"type":"selector","dimension":"sex","value":"也"}]},"intervals":["2021-06-07/2022-06-07"]}进行数据查询

viquery/filter4.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"month","aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"in","dimension":"local","values":["四川省","江西省","福建省"]},"intervals":["2021-06-07/2022-06-07"]}进行数据查询

{"type":"bound","dimension":"age","lower":"21",#默认包含等于"upper":"31",#默认包含等于"alphaNumeric":true#数字比较时指定alphaNumeric为true}使用案例,我们查询每一个月,年龄在21-31之间打车人的数量

viquery/filter5.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"month","aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"bound","dimension":"age","lower":"21","upper":"31","alphaNumeric":true},"intervals":["2021-06-07/2022-06-07"]}进行数据查询

编写测试,我们这里按照季度聚合,并且我们过滤年龄是21-31的数据,并且按照地域以及性别进行分组

viquery/filter6.json{"queryType":"groupBy","dataSource":"taxi_message","granularity":"Quarter","dimensions":["local","sex"],"aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"bound","dimension":"age","lower":"21","upper":"31","alphaNumeric":true},"intervals":["2021-06-07/2022-06-07"]}进行查询

viquery/filter7.json{"queryType":"groupBy","dataSource":"taxi_message","granularity":{"type":"duration","duration":7200000},"dimensions":["local","sex"],"aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"bound","dimension":"age","lower":"21","upper":"31","alphaNumeric":true},"intervals":["2021-06-07/2021-06-10"]}数据查询

viquery/filter8.json{"queryType":"groupBy","dataSource":"taxi_message","granularity":{"type":"period","period":"P1D"},"dimensions":["sex"],"aggregations":[{"type":"count","name":"taxiNum"}],"filter":{"type":"bound","dimension":"age","lower":"21","upper":"31","alphaNumeric":true},"intervals":["2021-06-07/2021-06-10"]}数据查询

Aggregator是聚合器,聚合器可以在数据摄入阶段和查询阶段使用,在数据摄入阶段使用聚合器能够在数据被查询之前按照维度进行聚合计算,提高查询阶段聚合计算性能,在查询过程中,使用聚合器能够实现各种不同指标的组合计算。

公共属性聚合器的公共属性介绍

计数聚合计数聚合器,等同于sql语法中的count函数,用于计算druidroll-up合并之后的数据条数,并不是摄入的原始数据条数,在定义数据模式指标规则中必须添加一个count类型的计数指标count;比如想查询Roll-up后有多少条数据,查询的JSON格式如下

viquery/aggregator1.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"Quarter","aggregations":[{"type":"count","name":"count"}],"filter":{"type":"bound","dimension":"age","lower":"21","upper":"31","alphaNumeric":true},"intervals":["2021-06-07/2022-06-07"]}求合聚合求和聚合器,等同于sql语法中的sum函数,用户指标求和计算,druid提供两种类型的聚合器,分别是long类型和double类型的聚合器;第一类就是longSumAggregator,负责整数类型的计算,JSON格式如下:{“type”:“longSum”,“name”:out_name,“fieldName”:“metric_name”}第二类是doubleSumAggregator,负责浮点数计算,JSON格式如下:{“type”:“doubleSum”,“name”:out_name,“fieldName”:“metric_name”}示例

viquery/aggregator2.json{"queryType":"timeseries","dataSource":"taxi_message","granularity":"Quarter","aggregations":[{"type":"longSum","name":"ageSum","fieldName":"age"}],"filter":{"type":"bound","dimension":"age","lower":"21","upper":"31","alphaNumeric":true},"intervals":["2021-06-07/2022-06-07"]}5.6DruidSQLDruidSQL是一个内置的SQL层,是Druid基于JSON的本地查询语言的替代品,它由基于ApacheCalcite的解析器和规划器提供支持DruidSQL将SQL转换为查询Broker(查询的第一个进程)上的原生Druid查询,然后作为原生Druid查询传递给数据进程。除了在Broker上转换SQL)的(轻微)开销之外,与原生查询相比,没有额外的性能损失。

可以在druid的控制台进行查询

我们在这里实现SpringBoot+Mybatis实现SQL查询ApacheDruid数据

@Data@ToStringpublicclassTaxiMessage{privateString__time;privateIntegerage;privateIntegercreateDate;privateStringlocal;privateStringsex;privateIntegerstatus;privateStringstatusText;privateStringusername;}编写mapper所有字段名、表名必须使用如下方式标识“表名”

@MapperpublicinterfaceTaxiMessageMapper{@Select("SELECT*FROM\"taxi_message\"whereusername=#{username}")publicTaxiMessagefindByUserName(Stringusername);}编写Service

@ServicepublicclassTaxiMessageService{@AutowiredprivateTaxiMessageMappertaxiMessageMapper;publicTaxiMessagefindByUserName(Stringusername){returntaxiMessageMapper.findByUserName(username);}}编写启动类

@SpringBootApplication@MapperScan(basePackages="com.druid.mapper")publicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class);}}

THE END
1.微消息群发微消息群发6.0分| 2413人| 27.47Mb 安全下载 360手机助手官方下载,安全高速 应用介绍应用详情:微消息群发是一款微信群发服务软件,同时群发助手也称得上是微粉帮手、微商营销 版本:2.3.25 更新时间:2024-12-10 10:18:05 开发者:布谷园(北京)科技有限公司http://m.app.haosou.com/detail/index?pname=com.fblhb.wxmsgkeeper&id=4573770
2.哔哩哔哩批量群发软件,助力轻松运营B站b站使用教程命令提示符但有了【老马定制软件】,它能把内容梳理得井井有条,比如开头用引人入胜的引言引出主题,中间把各个观点、案例等按照重要程度或者逻辑顺序依次排列,结尾再做个恰到好处的总结升华,让读者阅读起来轻松又顺畅,很容易就能理解和接受文章传达的信息啦。 使用【老马定制软件】发布文章之后呀,它会自动生成对应链接呢。这https://m.163.com/dy/article/JJH9EDP00556A27X.html
3.2007年3月全国计算机三级考试《网络技术》笔试真题11、传输速率为10Gbps的局域网每一秒钟可以发送的比特数为 A) 1ⅹ106 B) 1ⅹ108 C) 1ⅹ1010 D) 1ⅹ1012 12、以下关于网络协议的描述中,错误的是 A) 为保证网络中结点之间有条不紊地交换数据,需要制订一套网络协议 B) 网络协议的语义规定了用户数据下控制信息的结构和格式 https://www.oh100.com/kaoshi/ncre3/tiku/197205.html
4.江西省消防物联网系统设计施工验收标准本标准规定了消防物联网系统的设置范围,体系架构和基本要求,感知设计要求、传输设计要求、应用设计要求及系统的施工、调试、验收、运维管理等内容。本标准适用于本省消防物联网系统的设计、施工、验收和运维管理https://www.gdliontech.cn/content/?2727.html
5.Windows.h常用API函数转错倒是没有错,只是窗口句柄有问题,消息发送给了主窗口。接收消息的窗口不对。记事本窗口界面有些有什么东西呢?菜单,编辑框,状态栏等控件,控件也是窗口,既然是窗口,那当然它们也有窗口句柄,而在记事本里是在哪里打字的?编辑框控件里打字的嘛!所以消息应该发送编辑框控件,那如何获得记事本里编辑框控件的窗口句柄呢?https://blog.csdn.net/yu57955/article/details/107374023
6.扛住100亿次红包请求的架构是这样设计的!我是这样解决的:利用 NTP 服务,同步所有的服务器时间,客户端利用时间戳来判断自己的此时需要发送多少请求。 算法很容易实现:假设有 100 万用户,则用户 id 为 0-999999。要求的 QPS 为 5 万,客户端得知 QPS 为 5 万,总用户数为 100 万,它计算 100 万/5 万=20,所有的用户应该分为 20 组。 https://www.51cto.com/article/613210.html
7.新年寄语简短(精选19篇)12.溪水不知道为什么总要流向大海,蝴蝶不知道为什么总要在空中飞舞,我不知道为什么短信总要发送给你。可能是元旦到了的缘故吧,祝你元旦节快乐。 13.新年之特殊行动:开心地笑,要惊天动地;疯狂地侃,要谈天说地;放情地唱,要呼天唤地;疯狂地吃,要欢天喜地;踏心地睡,要昏天暗地;信息传情谊,要谢天谢地。祝https://www.kaoyanmiji.com/wendang/762580.html
8.www.jxmzxx.com/appnews他的内心深处有着坚定的信仰,在敌人的心脏里默默为党收集情报,传递消息。 每一次获取情报都像是在刀尖上跳舞,一不小心就会被敌人发现。 他还有一个隐藏身份,那就是军统特工。 这个身份让他的处境更加复杂,他要在三方势力之间周旋,哪边都不能露出破绽。 http://www.jxmzxx.com/appnews_120221.html
9.杭州法院重要信息系统异地容灾备份项目根据应用需求不同可以自由调整条带大小达到最优化模式,可实现4K、8K、16K、32K、64K、128K、256K、512K、1024K、2048K、4096K等不同大小的条带,同时可在线更改RAID组条带大小。 多通道管理 配置含多通道管理软件,可在服务器与盘阵间实现路径的负载均衡/故障切换;增加主机无需许可费用,支持Windows、Linux及UNIXhttps://m.cgwenjian.com/view/file/202210270000309353
10.中国移动网上大学传输设备OTN中兴L3题库3. 10G系统测试中要求发送端业务单板的消光比要高于多少 A.6dB B.3dB C.8dB D.10dB 答案:D 4. 光缆线路的主要敷设方式不正确的是() A.沿井 B.直埋 C.管道 D.架空 答案:A 5. 改造扩容工作包括:( )、方案的制定和认可、升级申请、实施阶段、后续异常处理、现场培训、资料整理、经验总结等步骤。 A.硬https://www.360docs.net/doc/1b226772dc36a32d7375a417866fb84ae45cc3a0.html
11.BOSS效果器GT100使用说明书.pdfBOSS效果器GT-100使用说明书.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 第2 版 使用手册 如何获取用户手册的 PDF 版本 本产品用户手册的 PDF 文件和补充材料可通过 Roland 网站获取。 ? GT-100 用户手册(本文档) ? GT-100 参数手册 * *这些资料不随产品提供,您可以根据需要https://m.book118.com/html/2021/0702/8021130122003115.shtm
12.100句文案,穿越冬天我应该发送那条本不应该发送的消息吗? 亦或 我是否发送了本应删除的不合适消息? 解决这种情况的最佳表情包是什么? 这些真的是植物鸡块? 为什么看起来尝起来都像鸡块? - 100%的困惑 0%的鸡肉 植物鸡肉块 点击查看项目详情 来自汉堡王。汉堡王通过一系列展现人们疑惑心理状态的海报,宣传品牌推出的植物肉鸡块。 https://www.digitaling.com/articles/897798.html
13.智东西早报:中科大首次实现皮秒量级序列发生全国全面启用新能源7月16日晚间消息,Uber今日推出了一款名为“Spotlight”的工具,旨在强化司机与乘客之间的通信,让司机在约定地点更轻松地找到乘客。通过这款工具,乘客可点亮其智能手机屏幕,并显示特定颜色,从而让司机有一个更好的寻找目标。点亮屏幕后,这款工具还能向司机发送一条消息,告诉其屏幕颜色。 https://zhidx.com/p/125024.html
14.VB高级编程100例Timer函数可以返回一秒的小数部分) Do While bDT If Timer - sPrevious >= Then bDT = False Loop bDT = True End Sub (通信传输速率为 9600bps,则最快速度 发送一个字节,仪表每秒发送 50帧数据,每帧数据有 4个字节,即每秒发送 200个字节,平均 发送一个字节,连续读取串口数据时要在程序中添加循环等待程序https://doc.mbalib.com/view/e8c063745aa4c9df703902110c6300a8.html
15.CDPR没能实现的赛博朋克世界——《ChromeBook2》装备篇机核G这些程序预封装在小塑料盒里,附有说明书和存储在标准数据芯片上的软件(每个芯片1MU,每个技能等级占用1MU)。由于它们的MU大小,这些程序必须存储在电脑的内存单元上才能使用。这些技能程序会增加用户的INT技能,但是它们需要运行时间(每个技能等级需要一秒),不像MRAM技能芯片那样。可用的技能程序包括会计、人类学、植物学https://www.gcores.com/articles/176033
16.抢先行动,赢得丰厚礼品:平台登录站点抢先2024王中王资料免费领取,28加拿大官网入口,888彩票3.0版本软件特色,27200注500万彩票中奖,100彩票安卓版2024年恩典365,7588con查询澳门,28.7下载,4777777开奖结果查询,139kj本港台开奖直播现场2018彩票手机认证送彩金,105有啥梗吗,012最权威彩票,24333齐齐发,10bet线上娱乐网站13086最新消息,12mc,cc,24小时线路检测中心,http://m.yghsix.cn/20241214/99495576766.html
17.www.scmc老外肛交 深夜免费在线www一秒进入 金桔软件下载 久久久久久久久久久午夜女同性恋视频 扣逼自慰潮吹床上激战 我就想要看看黄片 少妇李芬┅┅快┅┅用力 优质国产在线成人 一级99黄色视频 伴郎强上准新娘 黄片区免费观看 aiss爱丝无内丝袜自慰风云网 牛牛影视AV老牛影视AV无码 日韩激情欧美 中国农村夫妻三级http://www.scmc-xa.com/xxxr/584373.htm