栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 其他

软通实训笔记

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软通实训笔记

CentOS 7.0默认使用的是firewall作为防火墙
查看防火墙状态
systemctl status firewalld
停止firewall
systemctl stop firewalld
禁止firewall开机启动
systemctl disable firewalld
firewall开机启动
systemctl enable firewalld
修改主机名
hostnamectl set-hostname 'new name'

2021-8.2
1.查看ip地址的命令:
ipconfig  centOs6系列     
ip addr   centOs7系列
2.配置静态IP命令:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
配置基础
IPADDR=192.168.70.110
NETMASK=255.255.255.0
GATEWAY=192.168.70.2
DNS1=114.114.114.114
DNS2=8.8.8.8
3.重启网络:
service network restart

2021-8.3
1.查看系统盘符
df -h
2.加权限   (以.sh结尾的就是脚本)
chmod u+x a.sh
3.在当前目录去执行命令的时候,一定记得前边加上./
4.解压rpm包    对比昨天的.tar.gz
rpm -ivh  XXXX.rpm (一般rpm包不需要指定归档路径,一般会自动解压到CentOS)
mysql的安装(下午注意操作)
离线安装:(版本固定   配置大量的配置文件  修改环境变量)
在线安装:yum -y install wget(一键搞定)
wget  下载  。。。。。
下载mysql的安装包
第一步:下载解压   自行搞定
第二步:切换目录,找到解压后的mysql配置文件  
cd /etc/yum.repos.d/
第三步:选择mysql的版本  (把8.0的1改成0,把5.7的0改成1)
vi mysql-community.repo
第四步:在线安装
yum -y install mysql-community-server
第五步:第一次安装完毕,需要启动一下,之后开始不需要再启动
service mysqld start
第六步:先查看系统提供的临时密码  /var
cat /var/log/mysqld.log
第七步:登录
mysql -uroot -p
第八步:修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
修改密码长度
set global validate_password_length=6;
安全机制降到0
set global validate_password_policy=0;
5.授权登陆   
第一步:先关闭防火墙
systemctl status firewalld
关闭防火墙:注意先临时关闭,在永久关闭
systemctl stop firewalld
systemctl disable firewalld
第二步:授权登陆
(1):先登录mysql:
 mysql  -uroot  -p 输入新密码
(2):use mysql;
(3):更新域属性:
update user set host='%' where user ='root';
(4):执行以上语句之后再执行更新语句:
FLUSH PRIVILEGES;
(5):再执行授权语句:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
注意(元数据与真实数据的区别)
6.克隆的问题   (只能测试使用,生产中不能使用)
修改主机名跟IP地址
重启服务器命令:reboot    关机命名:power off
7.服务器之间传递资料
scp -r
8.配置host映射  (加好友)
vi /etc/hosts
9.配置免密登录      (公钥跟私钥)
第一步:先各自生成自己的密码
ssh-keygen
第二步:把密码告诉别人   (别忘记告诉自己一份)
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
10.修改环境变量:
vi /etc/profile
修改完环境变量  一定记得要source
source /etc/profile

2021-8.4
1.hadoop的由来???
雅虎    道格*卡庭    
GFS       HDFS
海量数据往哪里存???   GB  TB  PB      
HDFS  解决海量数据存储问题
海量数据存在那里有意义吗???
海量数据的分析于计算????  
mapReduce     
资源调度 : yarn  
2.hadoop的搭建教程:
第一步:下载tar包,并解压
第二步:配置hadoop的运行环境   (hadoop的底层是由java代码开发的)
vi hadoop-env.sh
第三步:修改core-site.xml文件  
vi core-site.xml
第四步:修改元数据与真实数据的保存路径
vi hdfs-site.xml
第五步:修改计算框架
vi mapred-site.xml
第六步:修改yarn资源
vi yarn-site.xml
第七步:修改从节点
vi slaves
第八步:初始化(hadoop集群在第一次搭建出来的时候,需要执行初始化,
记住,这个命令在主节点,只执行一次)
hadoop namenode -format
第九步:启动
start-all.sh
第十步:jps 查看java进程的命令
第十一步:登录web界面  50070
3.shell文本交互命令:
hadoop fs -mkdir /shida
把本地的数据上传到hdfs集群
hadoop fs -put 本地文件 hdfs的目标路径

hive笔记
//day01
正确的建表语句为:
create table stu1(word string)
row format delimited fields terminated by ',';
外部表(EXTERNAL_TABLE):表目录由建表用户自己指定
create external table w_stu1(id int,name string,age int,address string)
row format delimited  fields terminated by ','
location '/hive-data/log1';
1、创建带分区的外部表
create external table p_stu1(id int,name string,age int,address string)
partitioned by(dt string)
row format delimited fields terminated by ','
location '/hive-data/log3';
2、向分区中导入数据
load data local inpath '/root/access.log.2017-08-04.log' into table t_access partition(dt='2019-05-27');
load data local inpath '/root/access.log.2017-08-05.log' into table t_access partition(dt='2019-05-28');

collection items terminated by ':'


创建表(mysql的建表手法)
create table t_stu1(id int,name string,age int,address string);
//数据错的   不能根据mysql语句去导入数据
//这种方法好不好
1,刘一,10,山西
2,小二,11,陕西
3,张三,12,山东
4,李四,13,河南
5,王五,14,四川
6,赵六,15,广西
7,冯七,16,北京
8,王八,17,上海
9,李九,18,广州
10,刘十,20,深圳
//加载数据
load data local inpath '/root/students1.txt' into table t_stu1;

创建数据库   使用数据库    查询数据库    查询表
1.创建表(hive的创建手法)  类型不区分大小写
create table stu1(id int,name String,age int,address string)
row format delimited fields terminated by ',';

2.加载数据
load data local inpath '/root/students1.txt' into table stu1;

3.内部表(普通创建的表)
drop table stu1  
内部表在删除的时候,元数据跟真实数据,会被一起删除掉(安全机制不高)

hdfs加载数据
load data inpath '/shida/数据/input/wc.txt' into table t_stu1;

4.外部表
create external table w_stu1(id int,name String,age int,address string)
row format delimited fields terminated by ','
location '/hive-data/log1';

load data local inpath '/root/students1.txt' into table w_stu1;
内部表在删除的时候,元数据会被清除,但是真实数据会被保留下来(安全机制高)

5.注意事项
create external table w_stu3(id int,name String,age int,address string)
row format delimited fields terminated by ','
location '/hive-data/log2';


6.分区表  (外部的分区表)
create external table p_stu3(id int,name String,age int,address string)
partitioned by(dt date)
row format delimited fields terminated by ','
location '/hive-data/log3';

加载数据
load data local inpath '/students1.txt' into table p_stu3 partition(dt='2021-01-01');

7.数据的导出 (本地或者hdfs集群)几乎不用    (sqoop数据库迁徙的工具)
insert overwrite local directory '/home/hive-data'
row format delimited fields terminated by 't'
select * from w_stu2 where age>=18;

hdfs集群
insert overwrite directory '/home/farm'
row format delimited fields terminated by ','
select * from w_stu2 where age>=18;

//day02
1.数据如下:
香菜    2020-01-01    2.80    山西汾阳市晋阳农副产品批发市场    山西    汾阳
大葱    2020-01-01    2.80    山西汾阳市晋阳农副产品批发市场    山西    汾阳
葱头    2020-01-01    1.60    山西汾阳市晋阳农副产品批发市场    山西    汾阳
大蒜    2020-01-01    3.60    山西汾阳市晋阳农副产品批发市场    山西    汾阳
蒜苔    2020-01-01    6.20    山西汾阳市晋阳农副产品批发市场    山西    汾阳
韭菜    2020-01-01    5.60    山西汾阳市晋阳农副产品批发市场    山西    汾阳
青椒    2020-01-01    5.20    山西汾阳市晋阳农副产品批发市场    山西    汾阳
茄子    2020-01-01    5.40    山西汾阳市晋阳农副产品批发市场    山西    汾阳
西红柿    2020-01-01    4.80    山西汾阳市晋阳农副产品批发市场    山西    汾阳

2.创建表:
create table t_farm(name string,crawl_time date,price float,market string
,province string,city string)
row format delimited fields terminated by 't';

3.加载数据:
load data local inpath '/root/farm.csv' into table t_farm;

4.统计每个省份(province)的农产品市场(market)总数
(注意,出现聚合类函数,需要分组的情况,除聚合函数之外,其它所有的字段都要
跟在group by 之后)
第一种方式:
select a.province,count(*) from
(select province,market
from t_farm group by province,market)a
group by a.province
having province!="";

第二种方式:
select province,count(distinct market)
from t_farm group by province
having province!="";

5.统计山东省(province)售卖蛤蜊(name)的农产品市场(market)
占全省农产品市场的比例
select round(b.counts/a.sums,2) from
(select count(distinct market)sums from t_farm where province="山东")a,
(select count(distinct market)counts from t_farm
where province="山东" and name="蛤蜊")b;


6.统计每个省(province)农产品种类(name)总数,找出排名前3的省份
select province,count(distinct name)sums from t_farm
group by province order by sums desc limit 3;


7.统计排名前3的省份共同拥有的农产品类型
第一种方式:(使用上一问结果)
select c.name from
(select a.name as aaa from
(select distinct name from t_farm where province="北京")a
join
(select distinct name from t_farm where province="江苏")b
on a.name=b.name)e
join
(select distinct name from t_farm where province="山东")c
on e.aaa=c.name;

第二种方式:(不使用上一问结果)
select m.bbb,count(*)counts from
(select b.province,b.name as bbb from
(select province,count(distinct name)sums from t_farm
group by province order by sums desc limit 3)a
join t_farm b  on a.province=b.province
group by b.province,b.name)m
group by m.bbb
having counts=3;

join的知识:(俩个表以上)
select *  from a join b on a.name=b.name

交集  :  inner join  简写成join

并集:  full join

左外关联:left  join


右外关联:right join

create table a(name string,age int)
row format delimited fields terminated by ',';
create table b(name string,infos string)
row format delimited fields terminated by ',';

load data local inpath '/root/hive-data/a.txt' into table a;
load data local inpath '/root/hive-data/b.txt' into table b;

今日内容:
函数的使用:  (时间函数)
1.类型转换函数:cast(XXX as long)

2.数学函数
ceil    向上取整   
floor   向下取整
round   四舍五入     
abs     绝对值
max
min
avg
sum
count

3.字符串函数   substring 简写成substr  下标是1
substr("",起始坐标)
substr("",起始坐标,"要截取的数量")

4.拼接字符串  concat
select concat("",name);
select id,name,age,concat("省",address) from w_stu2;

5.切分 split
select explode(split("hadoop,hadoop,hive,spark,spark",","));

6.炸裂函数  explode(集合类型)  想当于java中的for循环  (作业:wordcount)
explode

7.upper(string str) ##转大写   lower(string str)

8.时间函数   "2021-01-02"      "1324253535"

获取时间戳   new SimpleDataforMat
select unix_timestamp();  获取的是当前

时间==》时间戳   1970
select unix_timestamp("1990-06-19","yyyy-MM-dd");


获取时间   根据天去分组
时间戳==》时间
select from_unixtime(1629775005,"yyyy-MM-dd");

9.条件控制函数
(case
when speend>=0 and speend<60 then '低速'
when speend>=60 and speend<120 then '中速'
else '高速'
end)aaa


if语句
if(判断体,"代码为true执行这里","代码为false执行这里")

10.json数据的处理
{"movie":"1193","rate":"5","timeStamp":"978300760","uid":"1"}
{"movie":"661","rate":"3","timeStamp":"978302109","uid":"1"}
{"movie":"914","rate":"3","timeStamp":"978301968","uid":"1"}
{"movie":"3408","rate":"4","timeStamp":"978300275","uid":"1"}
{"movie":"2355","rate":"5","timeStamp":"978824291","uid":"1"}
{"movie":"1197","rate":"3","timeStamp":"978302268","uid":"1"}

json_tuple(json,'movie','rate','timeStamp','uid') as
(movie,rate,ts,uid)
创建临时表:
create table temp_json(json string);
加载数据:
load data local inpath '/root/a.json' into table temp_json;
调用json解析函数:json_tuple
select json_tuple(json,'movie','rate','timeStamp','uid') as
(movie,rate,ts,uid) from temp_json;
创建正式表:
create table t_json as
select json_tuple(json,'movie','rate','timeStamp','uid') as
(movie,rate,ts,uid) from temp_json;

//day03
1.wordcount案列
数据如下:
hadoop,hadoop,spark,spark
hive,hive,hive,hadoop
hadoop,flume,spark,sqoop
kafka,kafka,hadoop,sqoop

创建表:split("hadoop,hadoop,spark,spark",",")
create table temp_wd(line string);
加载数据:
load data local inpath '/root/wc.txt' into table temp_wd;
sql语句:(这个字段如果是通过一系列的函数,返回的字段,
但是,这个字段在表中根本不存在,那么,在第一次使用的时候,是不能使用的)
select a.word,count(*)counts from
(select explode(split(line,",")) word from temp_wd)a
group by a.word;

2.表生成函数 lateral view    行转列  (非重点)
数据如下:
1,zhangsan,化学:物理:数学:语文
2,lisi,化学:数学:生物:生理:卫生
3,wangwu,化学:语文:英语:体育:生物
4,zhaoliu,数学:物理:化学:英语

最后希望变成:
1,zhangsan,化学
1,zhangsan,物理
1,zhangsan,数学
1,zhangsan,语文
2,lisi,化学....
创建表:数组类型的数据
create table t_subjects(id int,name string,subjects Array)
row format delimited fields terminated by ','
collection items terminated by ':';
加载数据:
load data local inpath '/root/subjects.txt' into table t_subjects;
//现在的数据如下:
1       zhangsan        ["化学","物理","数学","语文"]
2       lisi    ["化学","数学","生物","生理","卫生"]
3       wangwu  ["化学","语文","英语","体育","生物"]
4       zhaoliu ["数学","物理","化学","英语"]
//错误的写法
select id,name,explode(subjects)subject from t_subjects;
//正确
select id,name,temp.subject  from
t_subjects lateral view explode(subjects)temp as subject;


3.分析函数  (分组求TOPN)(hive中最重要的函数)
数据如下:row_number()over(partition by sex order by age desc)
id age name sex
1,18,a,male        5
2,19,b,male        4
9,30,j,male        3
5,35,e,male        1
7,32,g,male        2

8,36,h,female     2
6,26,f,female     3
3,22,c,female     4
4,16,d,female     5
10,46,k,female    1
需求:需要查询出每种性别中年龄最大的2条数据
select id,age,name,sex from t_topn
group by id,sex,age,name
order by age desc
limit 4;

创建表:数组类型的数据
create table t_topn(id int,age int,name string,sex string)
row format delimited fields terminated by ',';
加载数据:
load data local inpath '/root/topn.txt' into table t_topn;
分组函数:打标记函数
select * from
(select id,name,age,sex,
row_number()over(partition by sex order by age desc)flag
from t_topn)a
where a.flag<=2;

4.自定义函数    UDF
数据如下:   
a,1000,5000,1200    业绩提成
b,2200,150,200      基本工资
c,2200,4500,2200    业绩提成
d,1100,1500,3200    股权收益
e,2200,200,4200
f,2200,3500,620

3个字段分别表示: 用户姓名,基本工资,业绩提成,股权收益
需要查询出每个人的三类收益中最高的是哪一种收益

临时添加函数:
(1)先把jar包让hive识别
add  jar  /root/kgc.jar;
(2)创建临时函数的名字
create  temporary  function  getMax  as  'hive.CustomDemo';

永久添加函数:
(1)把jar包添加到hive的lib目录中
 mv /root/shifang--MR-1.0-SNAPSHOT.jar /usr/local/apache-hive-1.2.2-bin/lib/
(2)创建永久函数的名字
create  function  getMax  as  'hive.CustomDemo';

删除函数:
DROp  TEMPORARY  FUNCTION  function_name  
DROP  FUNCTION  function_name

数据如下:   
a,1000,5000,1200    业绩提成
b,2200,150,200      基本工资
c,2200,4500,2200    业绩提成
d,1100,1500,3200    股权收益
e,2200,200,4200
f,2200,3500,620
创建表:
create table t_custom(name string,jiben int,yeji int,guquan int)
row format delimited fields terminated by ',';

加载数据:
load data local inpath '/root/custom.txt' into table t_custom;

sql语句:
name    jiben   yeji    guquan  flag
a       1000    5000    120     2
b       2200    150     200     1
c       2200    450     2200    3
d       1100    1500    320     2
e       2200    200     4200    3
f       2200    3500    620     2
select name,jiben,yeji,guquan,
if(getMax(jiben,yeji,guquan)==1,
"基本工资",
if(getMax(jiben,yeji,guquan)==2,"业绩提成","股权收益")
)flag
from t_custom;


select name,jiben,yeji,guquan,
(case
when getMax(jiben,yeji,guquan)==1 then '基本工资'
when getMax(jiben,yeji,guquan)==2 then '业绩提成'
else '股权收益'
end)flag
from t_custom;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/279410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号