Big Data
Linux学习
Linux目录结构
Centos配网
linux命令
ls
list directry
ls- 选项 -路径(list)
ls -a显示所有目录包含隐藏文件
ls -l 列表显示文件
ls -h人性化显示文件大小
pwd
print work directory
显示当前所在路径,从根目录开始的绝对路径
cd
change directry
cd 切到主目录(root)
cd + 目录
cd… 切上级目录
Hadoop
hdfs shell
ls
hadoop fs -ls / hdfs根目录下的文件
hadoop fs -ls -R / 递归显示文件列表
mkdir
hadoop fs mkdir /dir1 创建文件夹 /dir1
hadoop fs mkdir -p /dir1/aaa/bbb -p可以递归创建 /dir1/aaa/bbb
put
hadoop fs -put /root/1.txt /dir1/asd 1.txt文件(或者是一个目录)放到asd,asd不存在也会自动创建,
get
Hadoop fs -get /源文件 /本地路径
mv
hadoop fs -mv /源路径 /目标路径 只能hdfs内部移动
rm
hadoop fs -rm -r(删除文件目录) -skipTrash(直接彻底删除)
cp
hadoop fs -cp /源文件 /目标路径
cat
hadoop fs -cat aaa.txt 查看aaa.txt
Mapreduce测试
hadoop jar /export/server/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar pi 2 10
计算圆周率
读写速度测试
hadoop jar /export/server/hadoop- 2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -write -nrFiles 10 -fileSize 10MB
分布式文件系统 -写测试(读换成 -read,清除测试文件换 -clean) 10个文件 -文件大小 10mb
jar自动读hdfs /benchmarks/testdfsio/io_data 下的十个文件
Hive
启动
正常启动
进beeline前打开hive服务指令:
hive --service hiveserver2 &
cd /export/server/spark-2.3.0-bin-hadoop2.7/bin
./beeline
!connect jdbc:hive2://node1:10000
尝试—beeline -u jdbc:hive2://hadoop00:10000
调试
#启动metastore服务
hive --service metastore &
#启动hiveserver服务
hive --service hiveserver2 &
cd /export/onekey
./start-all.sh
./stop-all.sh
cd /export/server/spark-2.3.0-bin-hadoop2.7/bin
./beeline
!connect jdbc:hive2://node1:10000
测试
use ods_didi;
select * from t_user_order limit 5;
查看metastore运行状况和id
nohup hive --service metastore > metastore.log 2>&1 & jobs
查看hiveserver2 运行状况和id
nohup hive --service hiveserver2 > hiveserver2 .log 2>&1 & jobs
runjar可能和metastore冲突,kill线程id
kill -s 9 PID
查看hive端口
netstat -anop|grep 10000
查看webUIi端口
netstat -anop|grep 10002
建库
默认存储路径在50070上 /user/warehouse/ 下面
可指定路径创建到hdfs根目录下root下
create database myhive2 location ‘/myhive22’ ;
查看数据库
查看myhive desc database myhive;
删除数据库
删除空数据库
drop database myhive;
强制删除数据库,包含下面的表
drop database myhive cascade;
建表
查看表
desc stu; 查看 stu 的基本信息,可看分区列
desc formatted stu; 查看 stu 表的详细结构信息,TYPE查看内外表
show create table stu; 查看表的创建语句
删除表
drop table stu ;
插入数据
inset 插入后在50070会生成小文件记录;(所以该方法仅作测试用)
查看生成文件的记录
hadoop fs **-cat** /user/hive/warehouse/mydemo.db/stu/**part-00000-8c52fbfa-2f34-4f07-8e0a-fe1f340e56c5-c000**
load加载数据
create table if not exists stu2(id int,name string) row format delimited fields terminated by '**\t**';
(tab)
load data local inpath ‘/export/data/hivedatas’ into table stu2;
load data local inpath 虚拟机路径 overwrite(覆盖已有数据)into table 表名 ;
local表示从本地加载,不加local表示从hdfs加载
mysql
mysql -uroot -p
use hive;
外部表
create external table student(-----)row format delimited fields terminated by ‘\t’ location ‘/hive_table/student’ ;
location ☞hdfs位置
使用external关键字修饰为外部表。
外部表删除只会删除在hive存储的元数据,不会删除hdfs的数据,如果在hive重新创建原表,会直接加载hdfs的数据
所以外部表数据用于共享,内部表数据作为中间表
一级分区表
–创建一级分区表
create table score(sid string,cid string, sscore int) **partitioned by** (month string) row format delimited fields terminated by '\t';
–数据加载
load data local inpath '/export/data/hivedatas/score.txt'
into table score **partition** (month='202006');
分区表对数据进行分类,按202006分类存储数据,但是仍在一个表里
多级分区表
–创建多级分区表
create table score2(sid string,cid string, sscore int) **partitioned by** (year string,month string, day string)
row format delimited fields terminated by '\t';
–数据加载
load data local inpath ‘/export/data/hivedatas/score.txt’ into table score2 partition(year=‘2020’,month=‘06’,day=‘01’);
按年月日多级分区存储,desc 可查询分区信息
分区操作
查看分区
show partitions score;
添加分区
alter table score add partition(month=‘202008’);
alter table score add partition(month=‘202009’) partition(month = ‘202010’);
删除分区mn
alter table score drop partition(month = ‘202010’);
内连接
隐式内连接:
select * from A,B where 条件;
select * from teacher t , course c where t.tid = c.tid;
显示内连接:
select * from A inner join B on 条件;
输出 A B 字段的交集
外连接
左外连接:left outer join
select * from A left outer join B on 条件;
输出 A 和AB字段交集(以左表为主).
右外连接:right outer join
select * from A right outer join B on 条件;
输出 B 和AB字段交集(以右表为主)
满外连接:full outer join
select * from A full outer join B on 条件;
select * from teacher t full join course c on t.tid = c.tid;
输出 A B 满足的所有记录
数学函数
指定精度取整函数: round
语法: round(double a, int d)
说明:返回指定精度d的double类型
举例: hive> select round(3.1415926,4);
3.1416
取随机数函数: rand
语法: rand(),rand(int seed)
说明:返回一个0到1范围内的随机数。如果指定种子seed,则会返回固定的随机数
字符串连接函数-带分隔符:concat_ws
语法: concat_ws(string SEP, string A, string B…)
说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符
举例:
hive> select concat_ws(‘,’,‘abc’,‘def’,'gh’);
abc,def,gh
字符串截取函数:substr,substring
语法:
substr(string A, int start, int len),
substring(string A, intstart, int len)
返回值:
string 说明:返回字符串A从start位置开始,长度为len的字符串
举例:
hive> select substr(‘abcde’,3,2);
cd
hive>select substring(‘abcde’,-2,2);
de
分组排名函数
partition by id 按照id分组
rank() over() as a 相同名次相同编号,总号不变
dense_rank() over() as b 相同名次不同编号,总号顺减
row_number() over() as c 相同名次不同编号,总号不变
行转列函数
行转列是指多行数据转换为一个列的字段。
Hive行转列用到的函数:
concat_ws(sep, str1,str2) --以分隔符拼接每个字符串
collect_set(col) --将某字段的值进行去重汇总,产生array类型字段
select deptno,concat_ws(“|”,collect_set(ename)) as ems from emp group by deptno;。
开窗函数
– 从开头累加到当前行
select user_id,createtime,pv,
sum(pv) over(partition by user_id order by createtime rows between unbounded preceding and current row) as pv2
from user_access;
– 从前3行累加到当前行
select user_id,createtime,pv, sum(pv) over(partition by user_id order by createtime rows between 3 preceding and current row) as pv4
from user_access;
– 从前3行累加到后一行
select user_id,createtime,pv, sum(pv) over(partition by user_id order by createtime rows between 3 preceding and 1 following) as pv5 from user_access;
可以计算sum()-max()-avg()-min()
zeppelin
启动
192.168.88.3:8090
类似annoconda jupter
清除缓存
ctrl + shift +delete