本地数仓项目(四)—— 即席查询

即席查询(Ad Hoc)入门(Kylin) 目录1、什么是即席查询2、前置概念3、Kylin3.1 Kylin简介2.2 Kylin架构 1、什么是即席查询 即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。 即席查询与通常查询从SQL语句上来说,并没有本质的差别。它们之间的差别在于: 通常的查询在系统设计和实施时是已知的,是定制开发的;所以我们可以在系统实施时通过建立索引、分区等技术来优化这些查询,使这些查询的效率很高。 而即席查询是用户在使用时临时生产的,是用户自定义查询条件的;系统无法 阅读详情

1 背景

本文描述本地数仓项目即席查询相关内容,主要涉及即席查询工具包括Presto、Druid、Kylin。
本文基于文章《本地数据仓库项目(一) —— 本地数仓搭建详细流程》 和《本地数仓项目(二)——搭建系统业务数仓详细流程》以及《本地数仓项目(三)—— 数据可视化和任务调度》

2 Presto

2.1 Presto概念

Presto是一个开源的分布式SQL查询引擎,数据量支持GB到PB,主要用于处理秒级查询的场景。

2.2 Presto架构在这里插入图片描述

2.3 Presto优缺点在这里插入图片描述

2.4 Presto安装

2.4.1 Presto Server安装

官网地址
https://prestodb.github.io/
下载地址
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/
1) 上传安装包并解压,修改解压后目录名

tar -zxvf presto-server-0.196.tar.gz
mv presto-server-0.196 presto-server
  1. 创建data和etc目录
[root@wavehouse-1 presto-server]# pwd
/root/soft/presto-server
[root@wavehouse-1 presto-server]# mkdir data
[root@wavehouse-1 presto-server]# mkdir etc
  1. etc目录下创建jvm.config文件
    并添加如下内容:
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
  1. Presto可以支持多个数据源,在Presto里面叫catalog,这里我们配置支持Hive的数据源,配置一个Hive的catalog
mkdir etc/catalog
vim catalog/hive.properties

hive.properties添加如下内容:

connector.name=hive-hadoop2
hive.metastore.uri=thrift://wavehouse-1:9083
  1. 分发presto安装包到集群各个节点
  2. 分发之后在各个节点etc目录下新建node.properties文件
    添加如下内容,注:不同节点的node.id设置为不同值,这里用的是十六进制。
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/opt/module/presto/data
  1. Presto是由一个coordinator节点和多个worker节点组成。在主节点上配置成coordinator,在其他节点上配置为worker
vim etc/config.properties

主节点添加如下内容

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8881
query.max-memory=50GB
discovery-server.enabled=true
discovery.uri=http://wavehouse-1:8881

其他节点添加如下内容

coordinator=false
http-server.http.port=8881
query.max-memory=50GB
discovery.uri=http://wavehouse-2:8881

8)启动Hive Metastore

nohup bin/hive --service metastore >/dev/null 2>&1 &

9)所有安装presto的节点启动presto

#前台启动
bin/launcher run

或

#后台启动
bin/launcher start

在这里插入图片描述
在这里插入图片描述

2.4.2 Presto命令行Client安装

下载地址:
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/

  1. 将下载的presto-cli-xxxx-executable.jar上传到主节点的安装presto文件夹下
  2. 修改名字并赋予可执行权限
    在这里插入图片描述
    3)放入支持lzo压缩的jar包
    由于数仓数据采用了lzo压缩,Presto去读数据时需要读取lzo格式数据,因此需要将lzo的jar包放入presto
cp /root/soft/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar ./
  1. 启动
./presto-cli --server wavehouse-1:8881 --catalog hive --schema default

5)Presto命令行操作
Presto的命令行操作,相当于Hive命令行操作。每个表必须要加上schema。
在这里插入图片描述

select * from hive.gmall.ads_back_count limit 10;

在这里插入图片描述

2.4.3 Presto可视化Client安装

  1. 上传yanagishima-18.0.zip到soft目录
  2. 解压缩
unzip yanagishima-18.0.zip
  1. 进入conf文件夹,编写yanagishima.properties
    添加如下内容
jetty.port=7080
presto.datasources=chen-presto
presto.coordinator.server.chen-presto=http://wavehouse-1:8881
catalog.chen-presto=hive
schema.chen-presto=default
sql.query.engines=presto

在这里插入图片描述
4)启动

nohup bin/yanagishima-start.sh >y.log 2>&1 &
  1. 访问http://wavehouse-1:7080
    在这里插入图片描述
    在这里插入图片描述

2.4.4 效率对比

执行同样的sql,分别在hive端执行和Presto端执行

2.4.4.1
select count(*) from hive.gmall.dws_uv_detail_day

hive使用TEZ引擎
在这里插入图片描述
忽略TEZ第一次启动耗时,hive的TEZ查询时间为6.89秒

Presto查询
在这里插入图片描述
presto耗时0.99秒,性能提升,秒级查询。

2.4.4.2
select max(dt) from hive.gmall.dws_uv_detail_day

hive查询耗时4.65秒
在这里插入图片描述
Presto查询
在这里插入图片描述
presto耗时0.92秒,性能提升,秒级查询。

注:由于当前本地虚拟机,内存给的是4G,性能有所限制,如果是实际生产环境内存64G+情况下,性能更优!
在这里插入图片描述

2.5 Presto优化

2.5.1 合理设置分区

与Hive类似,Presto会根据元数据信息读取分区数据,合理的分区能减少Presto数据读取量,提升查询性能。

2.5.2 使用列式存储

Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。

2.5.3 使用压缩

数据压缩可以减少节点间数据传输对IO带宽压力,对于即席查询需要快速解压,建议采用Snappy压缩。

3 Druid

3.1 Druid简介

Druid是一个快速的列式分布式的支持实时分析的数据存储系统。它在处理PB级别数据、毫秒级查询、数据实时处理方面,比传统的OLAP系统又显著性能提升。

3.2 Druid特点和应用场景

① 列式存储
② 可扩展的分布式系统
③ 大规模的并行处理
④ 实时或批量摄取
⑤ 自愈,自平衡,易操作
⑥ 数据进行有效的语句和或预计算
⑦ 数据结果应用Bitmap压缩算法

应用场景:
① 适用于清洗好的记录实时录入,但不需要更新操作
② 适用于支持宽表,不用Join的方式(即就是一张表)
③ 适用于可以总结出基础的统计指标,用一个字段表示
④ 适用于实时性要求高

3.3 Druid框架

在这里插入图片描述

3.4 Druid数据结构

与Druid架构相辅相成的是其基于DataSource与Segment的数据结构,它们共同成就了Druid的高性能优势。
在这里插入图片描述

3.5 Druid安装

3.5.1 安装包下载

从https://imply.io/get-started 下载最新版本安装包

3.5.2 安装部署

1)将imply-2.7.10.tar.gz上传到hadoop102的/opt/software目录下,并解压

tar -zxvf imply-2.7.10.tar.gz

2)修改imply-2.7.10名称为imply
3)修改配置文件
(1)修改Druid的ZK配置

vim imply/conf/druid/_common/common.runtime.properties

在这里插入图片描述
(2)修改启动命令参数,使其不校验不启动内置ZK

vim imply/conf/supervise/quickstart.conf

在这里插入图片描述
4)启动
(1)启动Zookeeper

./zkServer.sh statrt

(2)启动imply

bin/supervise  -c conf/supervise/quickstart.conf

3.5.3 Web页面使用

1)登录wavehouse-1:9095查看
在这里插入图片描述
2)点击Load data->点击Apache Kafka
设置kafka集群和主题
在这里插入图片描述
3)确认数据样本格式
在这里插入图片描述
4) 加载数据,必须要有时间字段
5)选择需要加载的项
在这里插入图片描述
6)创建数据库表名
在这里插入图片描述
7) 确认一下配置
在这里插入图片描述
8)连接Kafka的topic_start
在这里插入图片描述
9) 选择SQL,查询指标

select sum(uid) from "topic_start"

在这里插入图片描述

4 Kylin

4.1 Kylin介绍

Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

4.2 Kylin架构

在这里插入图片描述
1)REST Server
REST Server是一套面向应用程序开发的入口点,旨在实现针对Kylin平台的应用开发工作。 此类应用程序可以提供查询、获取结果、触发cube构建任务、获取元数据以及获取用户权限等等。另外可以通过Restful接口实现SQL查询。
2)查询引擎(Query Engine)
当cube准备就绪后,查询引擎就能够获取并解析用户查询。它随后会与系统中的其它组件进行交互,从而向用户返回对应的结果。
3)路由器(Routing)
在最初设计时曾考虑过将Kylin不能执行的查询引导去Hive中继续执行,但在实践后发现Hive与Kylin的速度差异过大,导致用户无法对查询的速度有一致的期望,很可能大多数查询几秒内就返回结果了,而有些查询则要等几分钟到几十分钟,因此体验非常糟糕。最后这个路由功能在发行版中默认关闭。
4)元数据管理工具(Metadata)
Kylin是一款元数据驱动型应用程序。元数据管理工具是一大关键性组件,用于对保存在Kylin当中的所有元数据进行管理,其中包括最为重要的cube元数据。其它全部组件的正常运作都需以元数据管理工具为基础。 Kylin的元数据存储在hbase中。
5)任务引擎(Cube Build Engine)
这套引擎的设计目的在于处理所有离线任务,其中包括shell脚本、Java API以及Map Reduce任务等等。任务引擎对Kylin当中的全部任务加以管理与协调,从而确保每一项任务都能得到切实执行并解决其间出现的故障。

4.3 Kyllin特点

Kylin的主要特点包括支持SQL接口、支持超大规模数据集、亚秒级响应、可伸缩性、高吞吐率、BI工具集成等。
1)标准SQL接口:Kylin是以标准的SQL作为对外服务的接口。
2)支持超大数据集:Kylin对于大数据的支撑能力可能是目前所有技术中最为领先的。早在2015年eBay的生产环境中就能支持百亿记录的秒级查询,之后在移动的应用场景中又有了千亿记录秒级查询的案例。
3)亚秒级响应:Kylin拥有优异的查询响应速度,这点得益于预计算,很多复杂的计算,比如连接、聚合,在离线的预计算过程中就已经完成,这大大降低了查询时刻所需的计算量,提高了响应速度。
4)可伸缩性和高吞吐率:单节点Kylin可实现每秒70个查询,还可以搭建Kylin的集群。
5)BI工具集成
Kylin可以与现有的BI工具集成,具体包括如下内容。
ODBC:与Tableau、Excel、PowerBI等工具集成
JDBC:与Saiku、BIRT等Java工具集成
RestAPI:与JavaScript、Web网页集成
Kylin开发团队还贡献了Zepplin的插件,也可以使用Zepplin来访问Kylin服务

4.4 Kylin安装

安装Kylin前需先部署好Hadoop、Hive、Zookeeper、HBase,并且需要在/etc/profile中配置以下环境变量HADOOP_HOME,HIVE_HOME,HBASE_HOME,记得source使其生效。
HBASE安装详细见这篇文章
1)下载Kylin安装包
下载地址:http://kylin.apache.org/cn/download/
2)解压apache-kylin-2.5.1-bin-hbase1x.tar.gz
3)启动
(1)启动Kylin之前,需先启动Hadoop(hdfs,yarn,jobhistoryserver)、Zookeeper、Hbase
(2)启动Kylin

bin/kylin.sh start

看到如下页面说明kylin启动成功
在这里插入图片描述
4) 访问URL
在http://wavehouse-1:7070/kylin查看Web页面
用户名为:ADMIN,密码为:KYLIN(系统已填)
在这里插入图片描述

4.5 Kylin使用

以gmall数据仓库中的dwd_payment_info作为事实表,dwd_order_info_his、dwd_user_info作为维度表,构建星型模型,并演示如何使用Kylin进行OLAP分析。

4.5.1 创建工程

  1. 选择‘+’按钮
    在这里插入图片描述
  2. 填写项目名称描述信息
    在这里插入图片描述

4.5.2 获取数据源

  1. 选择datasource
    2) 选择导入表
    在这里插入图片描述
  2. 选择所需数据表,并点击Sync按钮
    在这里插入图片描述

4.5.3 创建model

1)点击Models,点击"+New"按钮,点击"★New Model"按钮。
在这里插入图片描述
2)填写Model信息,点击Next
在这里插入图片描述
3)指定事实表
在这里插入图片描述

4)选择维度表,并指定事实表和维度表的关联条件,点击Ok
在这里插入图片描述
维度表添加完毕之后,点击Next
在这里插入图片描述
5)指定维度字段,并点击Next
在这里插入图片描述
6)指定度量字段,并点击Next
在这里插入图片描述
7)指定事实表分区字段(仅支持时间分区),点击Save按钮,model创建完毕
在这里插入图片描述

4.5.4 构建cube

1)点击new, 并点击new cube
在这里插入图片描述
2)填写cube信息,选择cube所依赖的model,并点击next
在这里插入图片描述
3)选择所需的维度,如下图所示
在这里插入图片描述
在这里插入图片描述
4)选择所需度量值,如下图所示
在这里插入图片描述
5)cube自动合并设置,cube需按照日期分区字段每天进行构建,每次构建的结果会保存在
Hbase中的一张表内,为提高查询效率,需将每日的cube进行合并,此处可设置合并周期。
在这里插入图片描述
6)Kylin高级配置(优化相关,暂时跳过)
在这里插入图片描述
7)Kylin相关属性配置覆盖
在这里插入图片描述
8)Cube信息总览,点击Save,Cube创建完成
在这里插入图片描述
9)构建Cube(计算),点击对应Cube的action按钮,选择build
在这里插入图片描述
10)选择要构建的时间区间,点击Submit
在这里插入图片描述

11)点击Monitor查看构建进度
在这里插入图片描述

4.5.6 使用进阶

执行上述流程之后,发现报错如下:
在这里插入图片描述
错误原因:上述错误原因是由于model中的维度表dwd_order_info_his为拉链表,dwd_user_info为每日全量表,故使用整张表作为维度表,必然会出现同同一个order_id或user_id对应多条数据的问题.又两种解决方案:
方案一:在hive中创建维度表的临时表,该临时表中只存放维度表最新的一份完整的数据,在kylin中创建模型时选择该临时表作为维度表。
方案二:与方案一思路相同,但不使用物理临时表,而选用视图(view)实现相同的功能。

4.5.7 采用方案二

(1)创建维度表视图

CREATE VIEW dwd_user_info_view as select * from dwd_user_info
WHERE dt='2023-01-04';
CREATE VIEW dwd_order_info_view as select * from dwd_order_info
WHERE dt='2023-01-04';

(2)在DataSource中导入新创建的视图,之前的维度表,可选择性删除。
在这里插入图片描述
修改后:
在这里插入图片描述
(3)重新创建model、cube
(4)等待重新构建
在这里插入图片描述
(5)查询结果
例1:

select user_level,sum(TOTAL_AMOUNT) from DWD_PAYMENT_INFO t1 join DWD_USER_INFO_VIEW t2 on t1.USER_ID = t2.ID
group by user_level

在这里插入图片描述
可发现当前耗时0.15秒,可以在在亚秒级别返回。

例2:增加一个性别维度查询

select user_level,gender,sum(TOTAL_AMOUNT) from DWD_PAYMENT_INFO t1 join DWD_USER_INFO_VIEW t2 on t1.USER_ID = t2.ID
group by user_level,gender

在这里插入图片描述
只需要0.09秒,可以在在亚秒级别返回。

4.5.8 Kylin BI工具

4.5.8.1JDBC

项目中导入maven依赖,即可开发,这里不再赘述

  <dependencies>
        <dependency>
            <groupId>org.apache.kylin</groupId>
            <artifactId>kylin-jdbc</artifactId>
            <version>2.5.1</version>
        </dependency>
    </dependencies>
4.5.8.2 Zepplin

1)Zepplin安装与启动
(1)将zeppelin-0.8.0-bin-all.tgz上传至Linux
(2)解压zeppelin-0.8.0-bin-all.tgz
(3)修改名称
(4)启动

bin/zeppelin-daemon.sh start

在这里插入图片描述
可登录网页查看,web默认端口号为8080
http://wavehouse-1:8080
在这里插入图片描述

2)配置Zepplin支持Kylin
(1)点击右上角anonymous选择Interpreter
在这里插入图片描述
(2)搜索Kylin插件并修改相应的配置
在这里插入图片描述
(3)修改完成点击Save完成
3) 创建新的note
在这里插入图片描述
(2)填写Note Name点击Create
在这里插入图片描述

(3) 输入SQL进行查询
在这里插入图片描述
(4 )查看查询结果
在这里插入图片描述

5 总结

5.1 即席查询对比

Druid/Impala/Presto/Es/Kylin/Spark SQL对比
在这里插入图片描述
后面是基于CDH搭建数仓项目,详见《CDH数仓项目(一) —— CDH安装部署搭建详细流程》

OLTP, OLAP, 即席查询(ad hoc query)区别与联系 对于目前来讲,对数据的处理主要集中在两个方面,一种是联机事务处理OLTP(on-line transaction processing),另一种是联机分析处理OLAP(On-Line Analytical Processing)。 OLTP:是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,典型的是银行ATM存取款,金融证券方面的实时更新等,这些操作都比较简单,主要是对数据库中的数据进行DML操作,操作主体一般是产品的用户,并且OLTP事务性非常高,一般都是高可用的在线系统,如上述的银行金融方面 阅读详情

相关推荐

Presto的概念和安装使用

一、概念 Pressto时一个开源的分布式SQL查询引擎,数据量支持GB到PB字节,主要用来处理秒级查询的场景 虽然Pressto可以解析SSQL,但它不是一个标准的数据库,不是MySQL、Oracle的代替品,也不能用来出来在线事务(OLTP) 1.1 Presto架构 Coordinator:决策者 -> 解析成MR Worker:工作者 -> 跑任务 Connecto...

SmallScorpion 1170

即席查询-Kylin

即席查询之预处理方案的代表

小王是个弟弟 9125

大数据江湖之即席查询与分析(中篇)--即席查询与分析的典型场景

上篇提到了大数据做数据分析的三种最为典型计算模式:批处理(Batch),即席查询与分析(Ad-hoc),流计算(Stream);对于批处理和流计算,虽然小弟也略知一二,早在Hive还没出来之前,也是从一字一句的写MapReduce代码走过来的,还有后来作为JStorm的Committer,老东家阿里把JStorm贡献给了Apache基金会,也算是在这两个领域有所涉足,不过小弟是领教过一些大神的,这里就不献丑了,还是承接上篇,分享一下小弟对即席查询与分析(Ad-hoc)的理解,列举三个较为典型的项目案例,供各

vv8086专栏 1万+

【数据仓库】即席查询

即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 2540

大数据江湖之即席查询与分析(上篇)--即席查询与分析的前世今生

如今,大数据领域新技术层出不穷,可谓百家争鸣,甚是红火。不乏有些玩家动辄搞出个大数据平台,可谓包罗万象,号称无所不能。小弟则以为在大数据江湖中如能修炼好独门绝技,有能拿得出手的看家本领已然实属不易。小弟有幸从2010年投身于大数据,并先后就职于阿里和腾讯,见过世面之后,自知才疏学浅,仅专注于大数据即席查询与分析技术。在此将多年所学所做汇聚成文,留下“大数据江湖之即席查询与分析”三部曲,为大数据即席查询与分析的后来者所用。

vv8086专栏 9375

大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo

上篇小弟分享了几个“即席查询与分析”的典型案例,引起了不少共鸣,好多小伙伴迫不及待地追问我们:说好的“手把手教你搭建即席查询与分析Demo”啥时候能出?说到就得做到,差啥不能差人品,本篇只分享技术干货,目的只有一个,就是让每一个伙伴都能根据本篇向导搭建出一个“即席查询与分析Demo”。 为了让各位伙伴能够尽快上手体验,所选案例就以上一篇中的“机动车缉查布控即席查询与分析”为例,上篇我们已经比较详尽的分析了用户需求,没好好听课的小伙伴赶紧把“大数据即席查询与分析(中篇)”再好好复习一下,这里不再赘

vv8086专栏 3737

什么是即席查询及即席查询实现

即席查询概念: 百度对即席查询的解释: 即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。 个人对即席查询的理解: 尽可能快的执行自定义的SQL语句(可能无法提前运算和预测) 重点关注 1.数据存储格式 ...

lsp的博客 1万+

OLTP、OLAP、即席查询(ad hoc query)区别与联系

对于目前来讲,对数据的处理主要集中在两个方面,一种是联机事务处理 OLTP(on-line transaction processing),另一种是联机分析处理 OLAP(On-Line Analytical Processing)。 OLTP:是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,典型的是银行 ATM 存取款,金融证券方面的实时更新等,这些操作都比较简单,主要是对数据库中的数据进行 DML 操作,操作主体一般是产品的用户,并且 OLTP 事务性非常高,一般都是高可用的在线系统,如上

x²+(y-√³x²)²=1的博客 2496

离线电商数仓3.0项目即席查询复盘笔记

离线电商数仓3.0的即席查询笔记 kylin的简介与架构 Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay Inc 开发并贡献至开源社区。它能在亚秒内查询巨大的 Hive 表。 kylin架构 1)REST Server REST Server 是一套面向应用程序开发的入口点,旨在实现针对 Kylin 平台的应用开发工作。 此类应用程序可以提供查询、获取结果、触发 cube 构建任务

m0_46168848的博客 2978

3.东软跨境电商数仓项目架构设计

东软跨境电商数仓项目架构设计

Mmj666的博客 1846

电动车辆的动力总成控制

手把手教你学Simulink——电动车辆的动力总成控制在汽车工程领域,电动汽车(EV)的动力总成控制系统是确保车辆性能、效率和驾驶体验的关键。动力总成控制系统通常包括电机控制、电池管理系统(BMS)、能量回收系统等组件。通过使用Simulink,我们可以模拟和测试这些系统的运行情况,优化设计,并验证控制算法的有效性。

amy_mhd的博客 968

即席查询框架怎么选?

Kylin,Impala,Presto,Druid 特点和不同

悦上心灵的博客 1520

PTPX功耗分析实战——从脚本配置到报告解读

本文详细介绍了PTPX功耗分析的全流程,从脚本配置到报告解读,帮助工程师快速掌握芯片设计中的功耗估算技术。文章涵盖了环境搭建、波形文件处理、功耗报告解析等关键环节,并提供了实战经验和优化建议,特别适合需要提升PTPX功耗分析效率的开发者。

weixin_29248313的博客 279

CDH数仓项目(二) —— 用户行为数仓和业务数仓搭建

基于CDH搭建用户行为数仓和业务数仓

不以物喜的博客 2426

广义平均(Generalized Mean, GeM)

本位介绍了广义平均操作的定义和简要推导,帮助大家理解其含义。

qq_45802280的博客 4547

ESP32脑机接口开发板:EEG信号采集与应用开发指南

脑机接口(BCI)技术通过采集脑电图(EEG)信号实现人机交互,其核心在于高精度生物电信号采集与实时处理。基于ESP32微控制器的开发平台结合专业级ADS1299 ADC芯片,可构建8通道EEG信号采集系统,支持250SPS采样率与可编程增益。这种嵌入式解决方案在科研教育领域具有显著优势,既能满足信号质量要求,又大幅降低开发门槛。典型应用包括实时脑电波可视化、注意力检测等BCI场景,通过Python生态工具链(如BrainFlow、LSL)可快速实现数据处理。开发时需注意电极阻抗控制(<10kΩ)和50/6

weixin_42518874的博客 344

什么叫即席查询

什么叫即席查询 这个仅当是笔记 以前一直不知道什么叫即席查询,今天重新看了一遍《SQLSERVER企业级管理平台》,才明白什么叫“即席查询” 下面这句话是我个人总结的: 什么叫即席查询AD-HOC :以单独的SQL语句的形式执行的查询就是即席查询,比如说:在C#程序里嵌入的SQL语句,或者在SSMS里的新建查询窗口 自己键入的SQL代码就是即席查询。 而将SQL代码放入存...

dingshen2767的博客 1212

Codex 的 AGENTS.md 到底怎么写?前端、后端两套实战模板,照抄就能用

文件名是大写AGENTS.md,放在项目根目录构建、测试、类型检查命令都是可直接复制执行的只写了 Agent 从代码里推断不出来的约定红线规则用了明确的否定句式(禁止/不要/Never)标注了自动生成目录和禁止修改的模块写清了交付要求(改动清单 + 验证命令 + 风险说明)没有任何密钥、密码、连接串整体一页能看完,核心要点 10 条以内每一条都能通过"删掉会不会更容易犯错"的测试一份短小精准的 AGENTS.md,比一份充斥模糊规则的长文件有用得多。

篮球界最会写bug的人;程序猿中打球最菜的人。 613

尚硅谷大数据项目之电商数仓(4即席查询数据仓库)

尚硅谷大数据项目之电商数仓(即席查询) (作者:尚硅谷大数据研发部) 版本:V4.0 第1章 Presto 1.1 Presto简介 1.1.1 Presto概念 1.1.2 Presto架构 1.1.3 Presto优缺点 1.1.4 Presto、Impala性能比较 https://blog.youkuaiyun.com/u012551524/article/details/79124532 测试结论:Impala性能稍领先于Presto,但是Presto在数据源支持上非常丰富,包括Hive、图数据库、传统关系型

小伟的博客 2044

ADAS方案设计-CAN网络管理与休眠唤醒机制

文章摘要:本文介绍了车载控制系统的五种工作模式及其转换条件,包括睡眠模式、准备睡眠模式、就绪睡眠模式、正常工作模式和重复消息状态。系统唤醒条件包括接收到网络管理报文或电源ON档信号,休眠条件则需满足电源OFF档、功能完成等多重要求。针对下挂节点的网络管理报文发送规则,详细说明了不同状态下的报文发送策略,特别是在哨兵模式、OTA模式等特殊场景下的处理方式。系统在满足休眠条件后会立即停止发送下挂节点网络管理报文,确保电源管理的有效性。

xiandang8023的博客 325

Gbase 8a GDCA考试真题100%

本文整理一些Gbase 8a中非常易错得考试真题及答案,而且都是不好搜的。加粗的是正确答案。

打工之路,一路生花 4306

即席查询引擎怎么选

一、怎么理解即席查询 即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。 1.1 即席查询与批处理后查询的区别 1.1.1 批处理后的查询 在数据仓库系统中,根据应用程序的需求,需要对源数据进行加工,这些加工过程往往是固定的处理原则,这种情况下,可以把数据的增删改查SQL语句写成一个批处理脚本,由调度程序定时执行。 特点:由于批处理脚本中...

Sunny的专栏 1036

fastlio2原理详解

其核心是利用IMU的高频数据(通常100-500Hz)进行状态预测(前向传播),同时利用激光雷达扫描(通常10-100Hz)作为观测来校正状态。转换了卡尔曼增益的计算公式,将对大维度观测矩阵的求逆(点云数量级)转换为对小维度状态矩阵的求逆,从而极大提升了计算效率。:利用预测出的连续IMU状态,将一帧内每个激光点根据其时间戳反向插值,统一校正到扫描结束时刻,输出无畸变的点云。收敛后,用最终的状态将本帧点云。,根据其精确的时间戳,利用前后两个IMU位姿进行插值,计算出该点采集时刻的精确位姿,再将其全部。

Studying…… 102

大数据数仓之报表开发

大数据数仓之报表开发 1. 背景 在大数据开发中,主要的数据分析目的可以分为2类。一类是基于历史数据(就算是实时数仓,接收到数据的时候,其实也已经是历史数据了)做数据规律或者结果提取;一类是基于历史数据,训练模型,做未来数据预测或者分类等。 如果是前者,基于已有数据做数据规律和数据结果提取,这时候就可以称之为报表开发。 参考神策系统,报表开发可以划分固定维度报表开发,一定维度自由组合报表开发,自由维度报表开发。 固定维度报表开发,一般是一些固定指标,但会加一些固定维度,典型的如年,月,日等 一定维度内自

xiaohu21的博客 7188

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 最新版海豚调度dolphinscheduler-3.1.3安装部署详细教程
下一篇: CDH数仓项目(一) —— CDH安装部署搭建详细流程
不以物喜2020
博客等级 码龄8年 85粉丝 100原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值