大数据生态系统组件基础学习

这是学习大数据这一整套各种组件MySQL,hive,spark,mapreduce等等的一些基础语法,日常更新,有不对的地方欢迎指正,资料也是自己收集来的,若有侵权,联系我立马删。

MySQL

(一)创建数据库及表

1.创建数据库database

​ create databases 数据库名

​ use 数据库名

​ 创建表格

​ create table 表名 (

​ 字段名1 数据类型 [约束条件],

​ 字段名2 数据类型 [约束条件],

​ [其他约束条件]

​ ) 其他条件(储存引擎,字符集条件等选项);

代码示例:

 create database test;
 use test;
 set names utf8;
 
 create table dome (
    id int unsigned not null auto_increment,
    title varchar(40) not null,
    price decimal(11,2),
    thumb varchar(225),
    author varchar(20),
    publisher varchar(50),
    primary key(id)
    ) engine=myisam default charset=utf8;

查看正在使用的数据库:

select database();

2.删除数据表

丢掉:drop

表:table

删除数据表:drop table 数据表名称;

drop database 数据库名称

drop table 表名

drop database test;
drop table dome;

3.查看数据库表结构

describe 表名

简写desc 表名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ITh35Xp2-1658977075600)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220701102836994.png)]

4.表的基础操作

I.向数据表中插入数据

基本语法:

插入:insert

向数据表中插入数据:

insert into 数据表名称([字段1,字段2…]) values (字段值1,字段值2…)

varchar类型的要输入双引号

代码示例:

insert into dome
values
(01,"apple",9.99,"yes","张三麻子","good");
II.修改字段数据类型

alter table 表名 modify column 字段名 类型 约束 [默认值, 注释];

alter table dome modify column id int(10) not null;
III.更新数据表中的记录

基本语法:

更新:update

update 数据表名称 set 字段(列) = 更新后的值,字段(列) = 更新后的值 where 条件;

IV.更新数据表中的记录

基本语法:

更新:update

update 数据表名称 set 字段(列) = 更新后的值,字段(列) = 更新后的值 where 条件;

update dome set author='替换值' where author='被替换的值';
V.数据表中删除数据(重点)

基本语法:

删除:delete

delete from 数据表名称 where 条件;

① delete from 数据表名称;

② truncate 数据表名称;

两者的功能都是删除所有数据,但是truncate删除的数据,其主键(primary key)会重新编号。而delete from删除后的数据,会继续上一次编号。

delete from dome where id=2;

(二)数据库常见操作

1.查看所有mysql的编码

show variables like 'character%';

#client connetion result 和客户端相关

database server system 和服务器端相关

将客户端编码修改为gbk.

set character_set_results=gbk; / set names gbk;

以上操作,只针对当前窗口有效果,如果关闭了服务器便失效。如果想要永久修改,通过以下方式:

在mysql安装目录下有my.ini文件

default-character-set=gbk 客户端编码设置

character-set-server=utf8 服务器端编码设置

注意:修改完成配置文件,重启服务

2.追加主键

Alter table 表名  add primary key(字段列表);
2.1更新主键 & 删除主键

没有办法更新主键: 主键必须先删除,才能增加.

Alter table 表名 drop primary key;

3.创建索引

建表的时候创建索引,也可以在已存在的表上添加索引。

CREATE TABLE 表名称(
    ......,
    INDEX [索引名称] (字段),
    ......
);
3.1添加索引
CREATE INDEX 索引名称 ON 表名(字段);  /*添加索引方式1*/
ALTER TABLE 表名 ADD INDEX 索引名称(字段); /*添加索引方式2*/
唯一索引:
CREATE UNIQUE INDEX 索引名称 ON 表名(字段)
联合索引:
CREATE INDEX 索引名称 ON 表名(字段1,字段2...)
3.2查询索引
SHOW INDEX FROM t_message;
3.3删除索引
/* 在t_message表中删除idx_type索引 */
DROP INDEX idx_type ON t_message;
3.4索引的使用原则
  1. 数据量很大,且经常被查询的数据表可以设置索引 (即读多写少的表可以设置索引)

  2. 索引只添加在经常被用作检索条件的字段上 (比如电子商城需要在物品名称关键字加索引)

3.不要在大字段上创建索引 (比如长度很长的字符串不适合做索引,因为查找排序时间变的很长)

(三)条件查询

语法:select 字段 from 数据库 where 条件;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IBTwn77B-1658977075601)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704151010931.png)]

1.like模糊查询

% 匹配任意个字符

下划线,只匹配一个字符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chfu1epS-1658977075601)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704151257699.png)]

2.排序——order by

语法:select 字段名 from 表名 order by 字段名(根据该来排序);
语法:select 字段名 from 表名 order by 字段名(根据该来排序) desc;     (降序)
2.1.根据多行字段进行排序

eg:查询员工的工资和名字,并按照升序进行,但是工资相同需要通过姓名来排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZI6YYQhg-1658977075602)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704151644373.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YgeSWXli-1658977075602)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704151806872.png)]

2.2根据字段位置来进行排序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UMHFpXDt-1658977075602)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704151921444.png)]

(四)函数及查询

1.大小写转换函数

select 函数名(字段名) from 表名;
lower将大写转化为小写
upper将小写转换为大写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TX2i4rJr-1658977075603)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704152442520.png)]

2.substr 取子串

substr(需要截取的字段,起始下标,截取长度) 起始下标是以1开始的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cX2xjPHW-1658977075603)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704152804635.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SfgeYYyL-1658977075604)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704153046260.png)]

3.concat函数进行字符串的拼接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Va5RT6CE-1658977075604)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704153409619.png)]

4.length 获取长度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7VyWycdE-1658977075604)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704153844134.png)]

select LENGTH(ename) as mylength from emp;

5.trim 去空格

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rarjRP5j-1658977075605)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704154102307.png)]

6.round 四舍五入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfvZWBf4-1658977075605)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704154138091.png)]

select ROUND(123.889,2) from emp;

7.ifnull (空处理函数)

可以将null转换为具体值注意:在数据库中只要有null参与数学运算,最终结果为null,不管加减乘除。

使用方法:ifnull(数据,指定成相应的数据)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mIgaQhE4-1658977075606)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704155211788.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9r98BH9u-1658977075607)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704155222876.png)]

8.case when then when then else end

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LZ4MYIPa-1658977075607)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704155906643.png)]

SELECT
	ename,
	sal AS oldsal,
	LOWER(job),
	(
		CASE job
		WHEN 'manager' THEN
			sal * 1.1
		WHEN 'salesman' THEN
			sal * 1.5
		ELSE
			sal
		END
	) AS newsal
FROM
	emp;

9.分组函数(多行处理函数)

count 计数        max 最大值          min 最小值   

avg 平均值        sum 总值              自动忽略null
select min(sal) from emp;

第一点:分组函数可以自动忽略null

第二点:count()和count(具体的字段)count():统计表当中的总行数count(具体的字段):表示统计该字段下所有不为null的字段

第三点:分组函数不能直接使用在where子句中

select job,sum(sal) from emp group by job;

10.分组查询(非常重要)

select …… 

from  …… 

where ……

group by ……

order by ……
10.1 执行顺序步骤:
第一步:from

第二步:where

第三步:group by

第四步:select

第五步:order by

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9QgvSXkt-1658977075608)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704163532943.png)]

10.2 分组的条件查询 having
having 可以对分完组的数据进行再次筛选
注意:having不能单独使用,having也不能代替where,having必须和group by联合使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-um3thFLf-1658977075608)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220704172525199.png)]

SELECT job,avg(sal) from emp GROUP BY job HAVING avg(SAL)>2500;
SELECT
	job,
	avg(sal)
FROM
	emp
GROUP BY
	job
HAVING
	avg(SAL) > 2500
ORDER BY
	avg(SAL) DESC;
10.3对查询结果进行去除重复数据

distinct 要放在需要查重的字段前面

select distinct job from emp;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UfUDu6Yw-1658977075609)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220705090558287.png)]

10.4统计工作岗位的数据
select count(distinct job) from emp;

11.连接查询

11.1连接查询概论

连接查询:是将多张表联合查询

11.2根据表的连接方式分类

内连接:

等值连接 非等值连接 自连接

外连接:

左外连接(左连接)右外连接(右连接)全连接(一般不用)

11.3笛卡尔积现象及解决办法

当两张表进行连接查询的时候,最后查询的结果是两张表行数的乘积,这种现象被称为笛卡尔积现象。

注意:表与表的联合查询,查询的次数表的行数乘以表的行数。

eg:查询员工名字和部门名字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hCHM4URP-1658977075609)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220705092635891.png)]

select ename,dname from emp,dept;
#这样联合查询会出现笛卡尔积现象,会导致数据爆炸

解决:笛卡尔积现象

只需在查询的时候加上筛选条件即可

eg:查询员工名字和部门名字

select ename,dname from emp,dept where emp.deptno=dept.deptno;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJ0zIxtt-1658977075610)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220705093439889.png)]

优化版:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5wkzuDy-1658977075610)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220705093654852.png)]

select e.ename,d.dname from emp as e,dept as d where e.deptno=d.deptno;

注意:通过笛卡尔积现象,说明了表连接越多,效率越低

11.4内连接
11.4.1内连接之等值连接

eg:查询每一个员工所在部门名称,显示员工名和部门名?

select e.ename,d.dname from emp as e,dept as d where e.deptno=d.deptno;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YktVP0C7-1658977075610)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220705094613712.png)]

改进:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jfQkLISU-1658977075611)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220705094628763.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ACXG55SV-1658977075611)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220705094643366.png)]

select e.ename,d.dname from emp as e join dept as d on e.deptno=d.deptno;

内连接的基础语法:

select 字段名1,字段名2 from 表名1 join 表名2 on 具体条件
11.4.2 、内连接之非等值连接

eg:找到每一个员工的薪酬等级,要求显示员工名、薪资、薪资等级

select * from salgrade;
select e.name,e.sal,s.grade from emp as e join salgrade as s on sal between

SAPRK

1.spark的基本认知:

	spark是一种快速通用可扩展性 的大数据分析引擎,hive是一个大数据存储框架。

什么叫做算子!!!就是对RDD进行操作的行为或者函数就叫算子。、

RDD的操作分为两类,一类是transformation(转化操作),另一类是Action(执行操作)

转换操作(Transformation) (如:map,filter,groupBy,sortBy,join等),转换操作也叫懒操作,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到转换操作时只会记录需要这样的操作,并不会去执行,需要等到有执行操作的时候才会真正启动计算过程进行计算。 Transformation算子根据输入参数,又可细分为处理Value型和处理Key-Value型的。

Value数据类型的Transformation算子,这种变换并不触发提交作业,针对处理的数据项是Value型的数据。
Key-Value数据类型的Transfromation算子,这种变换并不触发提交 作业,针对处理的数据项是Key-Value型的数据对。

那么什么又是懒操作呢?

懒操作就是你在使用transformation算子操作RDD的时候,是为了把RDD转化成为另外一种RDD,这种操作并不是立刻执行,只是spark会记录这样之中操作(相当于在此处写下了对RDD操作变换的脚本),并不去执行,只有触发ACtion算子操作的时候,才会去执行启动进程进行一个计算。

不管是Transformation里面的操作还是Action里面的操作,我们一般会把它们称之为算子,例如:map 算子、reduce算子

执行操作(Action) (如:count,collect,save,reduce等),执行操作会返回结果或把RDD数据写到存储系统中。Actions是触发Spark启动计算的动因。

像Action算子这样的执行操作,其实就是会返回结果的那种,会有数据写入存储系统的那种,同时也只有Action操作能够触发spark启动

img

transformation算子[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CtNVge2J-1658977075612)(C:\Users\HP\Desktop\Typora笔记文档\image-20220711092335291.png)]

Action算子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tDyScgJt-1658977075613)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220711092411416.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LZEoQP6b-1658977075613)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220711095202268.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rHJtZCe-1658977075613)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220711095216321.png)]

文件数据处理的生命周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5m6bakWc-1658977075614)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20220711095405860.png)]

在 RDD 之上调用 toDebugString,Spark 可以帮我们打印出当前 RDD 的 DAG

RDD4大属性:

partitions:数据分片
partitioner:分片切割规则
dependencies:RDD
依赖compute:转换函数

RDD血缘
RDD 只支持粗粒度转换,即在大量记录上执行的单个操作。将创建 RDD 的一系列 Lineage(血统)记录下来,以便恢复丢失的分区。RDD 的 Lineage 会记录 RDD 的元数据信息和转换行为,当该 RDD 的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。

宽窄依赖

RDD 依赖关系
这里所谓的依赖关系,其实就是两个相邻 RDD 之间的关系:

RDD 窄依赖
窄依赖表示每一个父(上游)RDD 的 Partition 最多被子(下游)RDD 的一个 Partition 使用,
窄依赖我们形象的比喻为独生子女。

RDD 宽依赖
宽依赖表示同一个父(上游)RDD 的 Partition 被多个子(下游)RDD 的 Partition 依赖,会
引起 Shuffle,总结:宽依赖我们形象的比喻为多生。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值