大数据基础

基本简介

大数据特点

  • 数据量大

  • 种类多样

    • 结构化:多指关系型数据库中,信用卡号码、日期、财务金额、电话号码、地址

    • 半结构化:xml/json

    • 非结构化:全文文本、图象、声音、影视、超媒体等信息。

  • 应用价值高

大数据的作用

  • 追溯:日志数据,定位问题;

  • 监控:监控服务(可用性,QPS);监控具体业务,比如看双十一销售额;数据质量等等;

  • 分析与洞察:toB业务,看板报表搭建;

数据分类

按照数据实效性(延迟情况):

  • 离线:在今天(T)处理N天前的数据,常用的是今天处理昨天产出(T-1)的数据,也就是T+1地产出数据,延迟粒度为天

  • 准实时:在当前小时,处理N小时前的数据,延迟粒度为小时

  • 实时:在当前时刻处理当前的数据,延迟粒度为秒

数据处理链路(不严谨)

暂时无法在飞书文档外展示此内容

  • 数据采集:数据的源头,从各种数据源中获取数据。分离线和实时采集,比如通过采集日志数据,实时采集到数据中间件中(mq)。

    暂时无法在飞书文档外展示此内容

    • 消息队列:Kafka & RocketMq

      • 解耦:接口出现问题,不会影响当前功能

      • 异步处理:不用所有流程走完再返回结果

      • 流量削峰:流量高峰期,可以将数据暂放在消息队列中

    • 消息代理:eventbus

      • 事件总线,构建在消息队列之上的,围绕event构建一条虚拟总线,用户无需关注底层消息队列的细节(比如选型,多少分区,扩容,报警之类的),覆盖消息声明、发布、订阅、运维

  • 数据处理:数据加工处理。

    • 离线用hive,(近)实时用flink

    • 数据同步:全量、增量同步

数据存储:将数据存到数据库中。

  • 存储规范:数仓知识;数仓表的设计

数据服务:根据数据做一些应用。

离线处理(批处理)

个人学习路线

->首先接触Hive SQL,感觉和MySQL很像(DDL,DML,DQL语句)。学了一种数据库,其他的类SQL语法差不多。

->学了sqark参数相关的,优化任务执行

->再了解hadoop,spark原理

Hive

flink做流式计算,spark/hive做批式计算

简介:基于Hadoop的数仓管理工具,可以将HDFS上的文件映射为表结构。

架构

  • 元数据存储

  • SQL到MapReduce的转换(sql解析)

注意:存储:hdfs;计算:mapReduce/Spark

Hive sql基础语法

参考:hive中文文档

常用的是创建 天级/小时级别表,分区为date/hour

 

-- 简单查询语句 select field1, field2 from db.table where date = '${date}' and hour = '${hour}' -- 聚合查询语句 select field1, sum(field2) as field2_alias from db.table where date = '${date}' and hour = '${hour}' group by field1 -- 临时查询 WITH subquery AS ( SELECT col1, col2 FROM db.table1 WHERE condition1 ) SELECT a.col1, a.col2, b.col3 FROM subquery a JOIN db.table2 b ON a.col1 = b.col3 WHERE condition2;

udf用户自定义函数

根据用户需求,自定义写函数处理数据

使用:用Java代码实现udf

step1:添加hive相关依赖

step2:编写udf类:继承UDF,并实现evalute方法

step3:项目编译,打jar包

step4:在hive中注册udf函数,并使用

 

package com.example; import org.apache.hadoop.hive.ql.exec.UDF; public class MyUDF extends UDF { public String evaluate(String input) { if (input == null) return null; // 在这里编写你的函数逻辑,例如把输入的字符串转成大写 return input.toUpperCase(); } }

Hadoop

分布式系统基础架构(主要是分布式存储和计算框架)

架构

  • 存储:hdfs(hadoop distributed file system,分布式文件系统)

  • 计算:mapReduce。将计算任务拆成map和reduce两个阶段,实际分成Map、Sort、Combine、Shuffle 以及Reduce 5个步骤

  • 资源调度管理:yarn(cpu和memory)

Hadoop常用命令

Hadoop提供了shell命令来与hdfs交互:

 

hadoop fs -ls <path>:列出指定 HDFS 路径下的文件和目录 hadoop fs -mkdir <path>:在 HDFS 中创建新目录,类似于 Unix 的 mkdir 命令。 hadoop fs -put <localsrc> <dst>:将本地文件(或目录)复制到 HDFS,这与 FTP 命令 put 类似。 hadoop fs -get <src> <localdst>:将 HDFS 上的文件(或目录)复制到本地,这与 FTP 命令 get 类似。 hadoop fs -mv <src> <dst>:移动 HDFS 中的文件或目录,相当于 Unix 的 mv 命令。 hadoop fs -cp <src> <dst>:复制 HDFS 中的文件或目录,相当于 Unix 的 cp 命令。 hadoop fs -rm <path>:删除 HDFS 中的文件,类似于 Unix 的 rm 命令。 hadoop fs -cat <path>:在控制台显示 HDFS 文件的内容,类似于 Unix 的 cat 命令。 hadoop fs -du <path>:显示 HDFS 文件或目录的大小,类似于 Unix 的 du 命令。 hadoop fs -df <path>:显示 HDFS 的可用空间,类似于 Unix 的 df 命令

Spark

架构

使用成百上千台机器 并行处理 存储在离线表中的海量数据。海量数据的任务,拆成小任务,并发到每一台机器上处理。

计算引擎,支持离线(批)处理、流式

部署:可以继承到hadoop yarn上运行,也可以单独部署(目前只用过前者)

支持spark sql:变体的hive sql

性能比较:计算比mapReduce快

Spark sql基础语法

python的pyspark使用

  1. 启动一个spark client

  2. 查出你想要的数据

  3. 编写处理数据的逻辑并执行任务

 

from pyspark.sql import SparkSession from pyspark import SparkConf conf = SparkConf() conf.setMaster('yarn') conf.setAppName('hive_sql_query') spark = SparkSession \ .builder \ .config(conf=conf) \ .enableHiveSupport() \ .config("", "") \ .config("", "") \ .getOrCreate() # 查询语句 df = spark.sql("select field1 AS f1, field2 as f2 from table1")

Spark参数

master和worker

定义:物理节点

master节点常驻master守护进程,负责管理worker节点,我们从master节点提交应用。

worker节点常驻worker守护进程,与master节点通信,并且管理executor进程。

引用csdn链接:https://blog.csdn.net/hongmofang10/article/details/84587262?utm_source=app&app_version=4.15.2

driver和executor

driver:可运行在master/worker上;

作用:

  1. main函数,构建SparkContext对象;

  2. 向集群申请spark所需要资源,也就是executor,然后集群管理者会根据spark应用所设置的参数在各个worker上分配一定数量的executor,每个executor都占用一定数量的cpu和memory;

  3. 然后开始调度、执行应用代码

executor:可运行在worker上(1:n)

作用:每个executor持有一个线程池,每个线程可以执行一个task,executor执行完task以后将结果返回给driver。

常用参数
 

分配资源 内存参数 --每个execotr分配几个核心 set spark.executor.cores=4; --executor内存 set spark.executor.memory= 20g; --executor堆外内存 set spark.executor.memoryOverhead = 10g; --driver内存 set spark.driver.memory=25g; --driver堆外内存 set spark.driver.memoryOverhead = 10g; --任务推测机制相关 --开启推测机制(处理慢任务,尝试在其他节点去重启这些任务;加速整个应用的执行) set spark.speculation=true; -- 设置阈值 spark.speculation.multiplier=1.8 -- 设置分位数 spark.speculation..quantile=0.7 --坏节点黑明单(处理可能导致任务频繁失败的故障节点,当一个节点被列入黑名单后,Spark 调度器将不再在这个节点上调度任务,从而提高了作业的成功率和整体性能) set spark.blacklist.enabled = true 调整shuffle,数据倾斜,内存OOM,超时相关的,根据具体任务使用具体参数

在线处理(流式处理)

Flink

计算模式:流批一体

批计算:统一收集数据,存储到数据库中,然后对数据进行批量处理(离线计算)

流计算:对数据流进行实时处理(实时计算)

架构

三层架构:

  • API & Libraries层:提供了支持流计算DataStream API和和批计算DataSet API的接口

还有提供基于流处理的CEP(复杂事件处理库)、SQL&Table库和基于批处理的FlinkML(机器学习库)、Gelly(图处理库)等

  • Runtime核心层:负责对上层不同接口提供基础服务,也是Flink分布式计算框架的核心实现层,支持分布式Stream作业的执行、JobGraph到ExecutionGraph的映射转换、任务调度等。

  • 物理部署层:该层主要涉及Flink的部署模式,目前Flink支持多种部署模式:本地、集群(Standalone/YARN

图片引用:https://blog.csdn.net/qq_35423154/article/details/113775546

运行时组件(任务调度)

4个组件(application url)

  • JobManager(任务管理器)

  • TaskManager(作业管理器)

  • ResourceManger(资源管理器)

  • Dispatcher(分发器)

Flink sql基本语法

参考:flink中文文档

定义一个source,数据从哪里输入;定义一个sink,数据输出到哪里

 

create table data_source ( `user_id` string, `data` string) with ( 'connector' = 'rocketmq', 'scan.startup-mode' = 'latest', 'cluster' = '', 'topic' = '', 'group' = '', 'format' ='json', 'parallelism' = ‘9’ ); create table sink( user_id varchar, vv_cnt varchar, `start_window` TIMESTAMP, `end_window` TIMESTAMP ) with ( 'connector' = 'kafka-0.10', 'scan.startup.mode' = 'latest-offset', 'properties.cluster' = '', 'topic' = '', 'parallelism' = '5', 'format' ='json' ); INSERT INTO sink SELECT xx FROM feature_data_source where xx GROUP BY xx;

窗口计算

  • 滚动窗口

  • 滑动窗口

udf用户自定义函数

一些复杂的逻辑用户可以自定义处理

scalar function:输入,输出为标量

aggregation function:多行数据聚合成一行

table function:

 

数仓知识

数仓分层

将数据有序组织和存储起来,常见的数仓层级划分:

  • ODS层(数据引用层,operational data store):存放未经处理的原始数据,是数仓的数据准备区。

  • CDM层(数据公共层,common data model):完成数据加工与整合,是数仓最核心最关键的一层。

    • DIM(维度层):以维度作为建模驱动

    • DWD层(数据明细层):以业务过程作为建模驱动

      • 常见的业务域:产商品域(产品product,商品goods,配置报价quote,合同contract),交易计费域(订单order,计量measure,计费billing,履约perform,票税invoice)

    • DWS层(数据汇总层):以业务主题作为建模驱动,根据DWD层数据,以各维度ID进行粗粒度汇总

  • ADS层(数据应用层,application data service):保存结果数据,为外部系统提供查询接口

其他分层结构

引用:知乎https://zhuanlan.zhihu.com/p/421081877

表命名规范

层名

命名规范

举例

dwd

{层缩写}_{业务板块}_{数据域缩写}_{自定义表命名标签缩写}_{加载方式,天级/小时级,增量/全量}

dwd_sale_trd_item_di 交易信息事实增量表

dws

{层缩写}_{业务板块}_{数据域缩写}_{自定义表命名标签缩写}_{统计时间周期范围缩写}

dwd_sale_trd_item_1h 交易信息事实1h增量表

总结

这部分学习,是边用边学,遇到问题就针对性地解决这个问题。这个过程学的很零散,需要定期将这些点连成线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/575558.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

protobuf协议逆向解析

protobuf协议逆向解析 地址: aHR0cHM6Ly93d3cudGlrdG9rLmNvbS9tZXNzYWdlcz9sYW5nPWVu找到接口/v2/message/get_by_user_init 如图所示, 参数和响应并不是可直接使用的, 虽然部分内容可读。 跟栈到这里&#xff0c; 找到封包前的数据 打上断点&#xff0c; 查看变量t就是请…

数字安全实操AG网址漏洞扫描原理与技术手段分析

在数字化世界的大舞台上&#xff0c;网络安全如同守护者一般&#xff0c;默默保卫着我们的虚拟疆界。当我们在享受互联网带来的便利时&#xff0c;一场无形的战争正在上演。黑客们利用各种手段试图攻破网站的安全防线&#xff0c;而防守方则依靠先进的技术和策略来抵御入侵。其…

武汉星起航:创新孵化模式,一站式服务助力卖家全球化拓展

在全球化浪潮席卷而来的今天&#xff0c;跨境电商行业已成为推动国际贸易的重要力量。武汉星起航电子商务有限公司&#xff0c;作为这一领域的佼佼者&#xff0c;以其前瞻性的战略眼光和创新的经营模式&#xff0c;积极践行“走出去”战略&#xff0c;凭借自营店铺运营经验和跨…

Golang | Leetcode Golang题解之第50题Pow(x,n)

题目&#xff1a; 题解&#xff1a; func myPow(x float64, n int) float64 {if n > 0 {return quickMul(x, n)}return 1.0 / quickMul(x, -n) }func quickMul(x float64, n int) float64 {if n 0 {return 1}y : quickMul(x, n/2)if n%2 0 {return y * y}return y * y * …

云赛道---深度学习

• 分析问题定位任务:首先定位问题&#xff0c;将实际问题转化为机器学习问题&#xff0c;需要什么样的 数据&#xff0c;然后进行数据的采集。包含数据探查、场景抽象、算法选择。比如逻辑回归可 以决定我们是不是能喝咖啡&#xff1b;那另外朴素贝叶斯算法可以用来区分垃圾…

Linux|Awk 变量、数字表达式和赋值运算符

引言 本部分[1]将深入学习 Awk 的高级应用&#xff0c;以应对更为复杂的文本或字符串过滤任务。将介绍包括变量、数值表达式和赋值运算符在内的 Awk 功能。 这些概念与你之前可能在诸如shell、C、Python等许多编程语言中接触过的概念并没有本质上的不同&#xff0c;所以你不必过…

SaaS云HIS平台源码 采用云部署模式,部署一套可支持多家医院共同使用

目录 云HIS门诊业务使用流程 云HIS住院业务使用流程 云HIS系统使用流程 云HIS优势 云HIS系统功能模块 医疗业务&#xff1a; 电子病历&#xff1a; 经济管理&#xff1a; 药物管理&#xff1a; 统计报表&#xff1a; 系统管理&#xff1a; 运营运维&#xff1a; 通…

NLP step by step -- 了解Transformer

Transformer模型 Transformer相关历史 首先我们先看一下有关Transformer模型的发展历史&#xff0c;下面的图是基于Transformer架构的一些关键模型节点&#xff1a; 图片来源于Hugging Face 图片来源于Hugging Face Transformer 架构 于 2017 年 6 月推出。原本研究的重点是…

deepin 亮相 Intel 合作伙伴交流会,展示AI大模型应用最新成果

内容来源&#xff1a;deepin 社区 2024 年 4 月 18 日&#xff0c;备受业界瞩目的 Intel Channel Partner Networking Fair 在香港天际万豪酒店隆重举办。 在这场行业盛会上&#xff0c;deepin&#xff08;深度&#xff09;受邀参与了 Intel Demo Showcase 环节&#xff0c;向…

JDBC查询大数据时怎么防止内存溢出-流式查询

文章目录 1.前言2.流式查询介绍3.使用流式查询3.1不开启流式查询的内存占用情况3.2开启流式查询的内存占用情况 4.开启流式查询的注意点 1.前言 在使用 JDBC 查询大数据时&#xff0c;由于 JDBC 默认将整个结果集加载到内存中&#xff0c;当查询结果集过大时&#xff0c;很容易…

python与pycharm如何设置文件夹为源代码根目录

相信大家遇到过下面这种情况 当我们在当前项目下引入了其它项目的代码&#xff0c;这是其它项目的包的导入路径是不用于当前项目的&#xff0c;这样导致项目无法正常起来&#xff0c;但是我们又不可能一个个文件去处理&#xff0c;这时可以用下面的方式解决 pycharm直接设置 …

Centos 5 的yum源

背景 有使用较老的Centos 5 系统内部安装软件无法正常报错&#xff0c;是由于系统叫老yum源存在问题 处理方法 更换下述yum源&#xff0c;可以将其他repo源文件备份移动到其他目录&#xff0c;添加下述源后重新测试 [C5.11-base] nameCentOS-5.11 baseurlhttp://vault.c…

非对称渐开线齿轮学习笔记分享

最近有小伙伴遇到了非对称渐开线齿轮的加工问题,花了些时间学习了解一下,下面是总结的学习笔记,有兴趣的朋友可以瞅瞅: 目录: 为什么要采用非对称? 非对称有什么优点? 非对称齿形如何加工? 非对称齿轮怎么测量? 非对称齿轮建模 为什么要采用非对称? 现在的传动要求…

【SSM进阶学习系列丨整合篇】Spring+SpringMVC+MyBatis 框架配置详解

文章目录 一、环境准备1.1、创建数据库和表1.2、导入框架依赖的jar包1.3、修改Maven的编译版本1.4、完善Maven目录1.5、编写项目需要的包1.6、编写实体、Mapper、Service 二、配置MyBatis环境2.1、配置mybatis的主配置文件2.2、编写映射文件2.3、测试环境是否正确 三、配置Spri…

streamlit data_editor学习之 LLM理论内存占用量计算器

streamlit data_editor学习之 LLM理论内存占用量计算器 一.效果二.代码三.运行命令四.参考链接 根据用户设置的LLM参数,计算设备内存的占用量。以web的形式方便共享,可以插入多条记录,表格更新后,可以动态计算结果 一.效果 二.代码 import streamlit as st #1.31.1 import cv…

【八股】Spring Boot

SpringBoot是如何实现自动装配的&#xff1f; 首先&#xff0c;SpringBoot的核心注解SpringBootApplication里面包含了三个注解&#xff0c;SpringBootConfigurationEnableAutoConfigurationComponentScan&#xff0c;其中EnableAutoConfiguration是实现自动装配的注解&#x…

如何最大程度使用AWS?

随着云计算技术的不断发展&#xff0c;AWS已经成为众多企业的首选&#xff0c;为其提供了强大的基础设施和服务。那么如何最大程度地、灵活地利用AWS&#xff0c;成为许多企业专注的焦点。九河云作为AWS的合作伙伴&#xff0c;为读者们提供一些技巧和策略&#xff0c;帮助读者充…

UL认证防逆流多功能监测装置AGF-AE-D

安科瑞薛瑶瑶18701709087/17343930412 在单逆变器系统中&#xff0c;仪表直接与逆变器相连。如果您的变频器有一个内置的收入等级表&#xff08;RGM&#xff1b;该变频器 被称为收入等级变频器&#xff09;&#xff0c;您可以在 RGM 的同一总线上连接一个外部仪表。

【React】Sigma.js框架网络图-入门篇(2)

通过《【React】Sigma.js框架网络图-入门篇》有了基本认识 由于上一篇直接给出了基本代码示例&#xff0c;可能看着比较复杂也不知道是啥意思&#xff1b; 今天从理论入手重新认识下&#xff01; 一、基本认识 首先&#xff0c;我们先了解下基础术语&#xff1a; 图(Graph)&…

波高仪:数字浪高仪解析

波高仪&#xff0c;也被称为数字浪高仪&#xff0c;是一种专门用于测量波浪高度的设备。它采用低功耗微处理器、24bit高精度AD转换器和长距离通信技术&#xff0c;配备电容式波高传感器&#xff0c;具有线性好、功耗低、量精度高、传输距离远、性能稳定、抗干扰能力强等特点。 …
最新文章