hdfs笔记

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<string>)
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;

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值