大数据命令,一文在手,全部都有2.0(领取文件)

Linux

1. vi/vim

一般模式

语法

功能描述

yy

复制光标当前一行

y数字y

复制一段(从第几行到第几行)

p

箭头移动到目的行粘贴

u

撤销上一步

dd

删除光标当前行

d数字d

删除光标(含)后多少行

x

删除一个字母,相当于del

X

删除一个字母,相当于Backspace

yw

复制一个词

dw

删除一个词

shift+^

移动到行头

shift+$

移动到行尾

1+shift+g

移动到页头,数字

shift+g

移动到页尾

数字N+shift+g

移动到目标行

编辑模式

按键

功能

i

当前光标前

a

当前光标后

o

当前光标行的下一行

I

光标所在行最前

A

光标所在行最后

O

当前光标行的上一行

指令模式

命令

功能

:w

保存

:q

退出

:!

强制执行

/要查找的词

n 查找下一个,N 往上查找

? 要查找的词

n是查找上一个,shift+n是往下查找

:set nu

显示行号

:set nonu

关闭行号

2. RPM

RPM查询命令:rpm -qa |grep firefox

RPM卸载命令:

rpm -e xxxxxx

rpm -e --nodeps xxxxxx(不检查依赖)

RPM安装命令:

rpm -ivh xxxxxx.rpm

rpm -ivh --nodeps fxxxxxx.rpm(--nodeps,不检测依赖进度)

选项

功能

-i

-i=install,安装

-v

-v=verbose,显示详细信息

-h

-h=hash,进度条

--nodeps

--nodeps,不检测依赖进度

3. 登录与注销

命令

描述

sudo useradd lilei

添加用户 (不能被立即使用,需设置密码 sudo passwd lilei)

sudo adduser lilei

添加用户

login

登录或切换用户

logout

注销用户(命令行)  exit(shell-退出控制台)

shutdown -h 10

10分钟后自动关机 shutdown -c  //取消

halt(root用户)

关闭所有进程后自动关机

poweroff

同上

shutdown -r 10

十分钟后自动重启

init 6

重启 (0-停机,1-单用户,2-多用户,3-完全多用户,4-图形化,5-安全模式,6-重启)

reboot

重启

欢迎关注,一起学习,领取同文文件,方便你使用和学习

4. 目录与文件

命令

描述

cat > myfile

创建文件并编辑内容(ctrl+D结束编辑)

cat -n myfile

查看文件

chmod [u/g/o/a][+/-/=][r/w/x] myfile

更改文件权限 u-user,g-group,o-others,a-all  .   +-添加,--删除,=-重置   .r-read读(4),w-write写(2),x-execute执行(1)

more myfile

分页往后显示文件(Space空格)

less myfile

分页自由显示文件(Page Down / Page Up)

head (-10) myfile

指定显示文件前若干行(默认前10)

tail (-10) myfile

指定显示文件后若干行(默认后10)

5. 文件内容处理

命令

描述

sort myfile

对文件内容进行排序

sort -r myfile

逆序

uniq myfile

检查文件中的重复内容

grep (-c)‘a’ myfile

在文件中查找指定内容 (显示行号)

diff myfile01 myfile02

对不同文件进行比较

diff3 myfile01 myfile02 myfile03

三个文件

sdiff myfile01 myfile02

合并

cmp myfile01 myfile02

通过字节对不同文件进行比较

omm myfile01 myfile02

对有序文件进行比较

cut -b(-c)(-d) 2(3) myfile

对文件内容进行剪切

paste myfile02 myfile01

对文件内容进行粘贴 02-)01

wc (-参数) myfile  

对文件内容进行统计 (c-字符数,w-单词数,l-行数)

6. 文件搜索

命令

描述

find / -name file1

从 '/' 开始进入根文件系统搜索文件和目录

find / -user user1

搜索属于用户 'user1' 的文件和目录

find /home/user1 -name *.bin

在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件

find /usr/bin -type f -atime +100

搜索在过去100天内未被使用过的执行文件

find /usr/bin -type f -mtime -10

搜索在10天内被创建或者修改过的文件

find / -name *.rpm -exec chmod 755 '{}'

搜索以 '.rpm' 结尾的文件并定义其权限 ^

find /tmp -name *.hprof -exec rm -f {}

批量删除java堆栈.hprof文件

find / -xdev -name *.rpm

搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备

locate *.ps

寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令

whereis halt

显示一个二进制文件、源码或man的位置

which halt

显示一个二进制文件或可执行文件的完整路径

grep -rn "query_string" *

Linux目录下全局查找所有文件中是否包含指定字符串(-r:递归;-n:显示行号)

7. 压缩

命令

描述

zip myfile.zip myfile

压缩

zip -d myfile.zip myfile

添加

zip -m myfile.zip myfile

删除

unzip -o myfile.zip

解压(覆盖)

unzip -n myfile.zip

解压(不覆盖)

zipinfo myfile.zip

列出压缩文件信息

8. 磁盘空间

命令

描述

df -h

显示已经挂载的分区列表

ls -lSr |more

以尺寸大小排列文件和目录

du -sh dir1

估算目录 'dir1' 已经使用的磁盘空间'

du -sk * | sort -rn

以容量大小为依据依次显示文件和目录的大小

9. 系统负载

命令

描述

top -d 20 -p 1303

将进程号1303的系统负载,每隔20秒刷新一次

top -d 20 -n 3 -b > test.txt

每隔20秒,一共执行3次, 将统计结果导入到test.txt文件中。

Shell

输入/输出重定向

命令

功能说明

command > file

将输出重定向到 file

command < file

将输入重定向到 file

command >> file

将输出以追加的方式重定向到 file

n > file

将文件描述符为 n 的文件重定向到 file

n >> file

将文件描述符为 n 的文件以追加的方式重定向到 file

n >& m

将输出文件 m 和 n 合并

n <& m

将输入文件 m 和 n 合并

<< tag

将开始标记 tag 和结束标记 tag 之间的内容作为输入

脚本编辑

快捷方式

功能说明

shift

参数左移

$@

所有的参数

$#

参数的个数


Git

基本命令

命令

说明

git init

初始化仓库

git clone

拷贝一份远程仓库,也就是下载一个项目

git add

添加文件到暂存区

git status

查看仓库当前的状态,显示有变更的文件

git diff

比较文件的不同,即暂存区和工作区的差异

git commit

提交暂存区到本地仓库

git reset

回退版本

git rm

删除工作区文件

git mv

移动或重命名工作区文件

git log

查看历史提交记录

git blame

以列表形式查看指定文件的历史修改记录

git remote

远程仓库操作

git fetch

从远程获取代码库

git pull

下载远程代码并合并

git push

上传远程代码并合并

分支管理命令

命令

说明

git branch

列出分支

git branch (branchname)

创建分支命令

git branch -d (branchname)

删除分支

git checkout (branchname)

切换分支

git merge

合并分支


Hadoop

启动类命令

功能说明

命令脚本

启动hdfs集群

sbin/start-dfs.sh

启动yarn

sbin/start-yarn.sh

hadoop fs/hdfs dfs 命令

功能说明

命令

创建目录

hdfs dfs -mkdir -p /data/flink

显示目录

hdfs dfs -ls /

从HDFS拷贝到本地

hdfs dfs -copyToLocal /data/data.txt ./

文件上传到集群(从本地)

hdfs dfs -copyFromLocal data.txt /

文件下载

hdfs dfs -get /data/flink

删除集群的文件

hdfs dfs -rm /data/flink

删除文件夹

hdfs dfs -rm -r -skipTrash /data

从本地剪切粘贴到HDFS

hdfs dfs  -moveFromLocal data.txt /data/

追加一个文件到已经存在的文件末尾hdfs dfs -appendToFile data1.txt /data/data.txt

显示文件内容

hdfs dfs -cat data.txt

修改文件所属权限

hdfs dfs  -chmod  777 xxx.sh

修改文件所属用户组

hdfs dfs  -chown  root:root data.txt

从HDFS的一个路径拷贝到HDFS的另一个路径

hdfs dfs -cp data.txt /data1.txt

在HDFS目录中移动文件

hdfs dfs -mv data.txt /opt/

合并下载多个文件

hdfs dfs  -getmerge /data/* ./data_merge.txt

hadoop fs -put

等同于copyFromLocal

显示一个文件的末尾

hdfs dfs -tail data.txt

删除文件或文件夹

hdfs dfs -rm /data/data.txt

删除空目录

hdfs dfs -rmdir /data

统计文件夹的大小信息

hdfs dfs -s -h /data

统计文件夹下的文件大小信息

hdfs dfs  -h /data

设置HDFS中文件的副本数量

hdfs dfs -setrep 3 /data/data.txt

yarn命令

功能说明

命令

查看正在运行的yarn任务列表

yarn application -list appID

kill掉指定id的yarn任务

yarn application -kill appID

查看任务日志信息

yarn logs -applicationId appID


Zookeeper

启动命令

功能说明

命令脚本

启动zookeeper服务

zkServer.sh start

查看zookeeper状态

zkServer.sh status

停止zookeeper服务

zkServer.sh stop

启动zookeeper客户端

zkCli.sh -server 127.0.0.1:2181

退出zookeeper客户端

quit

基本操作

功能说明

命令脚本

当前znode中所包含的内容

ls /

创建普通节点(前面是节点的路径,后面是值)

create /bigdata/flink "flink"

获取节点的值

get /bigdata

修改节点的值

set /bigdata/flink "flinksql"

删除节点

delete /bigdata/flink

递归删除节点

rmr /bigdata

四字母命令

命令

功能说明

例子

conf

zk服务配置的详细信息

echo conf | nc 127.0.0.1 2181

stat

客户端与zk连接的简要信息

参考上面

srvr

zk服务的详细信息

参考上面

cons

客户端与zk连接的详细信息

参考上面

mntr

zk服务目前的性能状况

参考上面

crst

重置当前的所有连接、会话

参考上面

dump

列出未经处理的会话和连接信息

参考上面

envi

列出zk的版本信息、主机名称、Java版本、服务器名称等等

参考上面

ruok

测试服务器是否正在运行,如果在运行返回imok,否则返回空

参考上面

srst

重置Zookeeper的所有统计信息

参考上面

wchs

列出watch的总数,连接数

参考上面

wchp

列出所有watch的路径及sessionID

参考上面

mntr

列出集群的关键性能数据,包括zk的版本、node数量、临时节点数等等

参考上面


Kafka

注: 这里机器我只写一个。命令你们也可使用 ./bin/xx.sh (如:./bin/kafka-topics.sh)

查看当前服务器中的所有topic

kafka-topics --zookeeper xxxxxx:2181 --list --exclude-internal 

说明:

exclude-internal:排除kafka内部topic

比如: --exclude-internal  --topic "test_.*"

创建topic

kafka-topics --zookeeper xxxxxx:2181  --create 
--replication-factor 
--partitions 1 
--topic topic_name

说明:

--topic 定义topic名

--replication-factor  定义副本数

--partitions  定义分区数

删除topic

注意: 需要server.properties中设置delete.topic.enable=true否则只是标记删除

kafka-topics --zookeeper xxxxxx:2181 --delete --topic topic_name

生产者

kafka-console-producer --broker-list xxxxxx:9092 --topic topic_name

可加:--property parse.key=true(有key消息)

消费者

kafka-console-consumer --bootstrap-server xxxxxx:9092 --topic topic_name

注:可选

--from-beginning:会把主题中以往所有的数据都读取出来

--whitelist '.*' :消费所有的topic

--property print.key=true:显示key进行消费

--partition 0:指定分区消费

--offset:指定起始偏移量消费

查看某个Topic的详情

kafka-topics --zookeeper xxxxxx:2181 --describe --topic topic_name

修改分区数

  kafka-topics --zookeeper xxxxxx:2181 --alter --topic topic_name --partitions 6

查看某个消费者组信息

kafka-consumer-groups --bootstrap-server  xxxxxx:9092  --describe --group group_name

删除消费者组

kafka-consumer-groups --bootstrap-server  xxxxxx:9092  ---delete --group group_name

重置offset

kafka-consumer-groups --bootstrap-server  xxxxxx:9092  --group group_name

--reset-offsets --all-topics --to-latest --execute

leader重新选举

指定Topic指定分区用重新PREFERRED:优先副本策略 进行Leader重选举

kafka-leader-election --bootstrap-server xxxxxx:9092 
--topic topic_name --election-type PREFERRED --partition 0

所有Topic所有分区用重新PREFERRED:优先副本策略 进行Leader重选举

kafka-leader-election --bootstrap-server xxxxxx:9092 
--election-type preferred  --all-topic-partitions

查询kafka版本信息

kafka-configs --bootstrap-server xxxxxx:9092 --describe --version

增删改配置

功能说明

参数

选择类型

--entity-type (topics/clients/users/brokers/broker- loggers)

类型名称

--entity-name

删除配置

--delete-config k1=v1,k2=v2

添加/修改配置

--add-config k1,k2

topic添加/修改动态配置

kafka-configs --bootstrap-server xxxxxx:9092
--alter --entity-type topics --entity-name topic_name 
--add-config file.delete.delay.ms=222222,retention.ms=999999

topic删除动态配置

kafka-configs --bootstrap-server xxxxxx:9092 
--alter --entity-type topics --entity-name topic_name 
--delete-config file.delete.delay.ms,retention.ms

持续批量拉取消息

单次最大消费10条消息(不加参数意为持续消费)

kafka-verifiable-consumer --bootstrap-server xxxxxx:9092 
--group group_name
--topic topic_name --max-messages 10

删除指定分区的消息

删除指定topic的某个分区的消息删除至offset为1024

json文件offset-json-file.json

{
    "partitions": [
        {
            "topic": "topic_name",
            "partition": 0,
            "offset": 1024
        }
    ],
    "version": 1
}

kafka-delete-records --bootstrap-server xxxxxx:9092 
--offset-json-file offset-json-file.json

查看Broker磁盘信息

查询指定topic磁盘信息

kafka-log-dirs --bootstrap-server xxxxxx:9090 
--describe --topic-list topic1,topic2

查询指定Broker磁盘信息

kafka-log-dirs --bootstrap-server xxxxxx:9090 
--describe --topic-list topic1 --broker-list 0

Hive

启动类

功能说明

命令

启动hiveserver2服务

bin/hiveserver2

启动beeline

bin/beeline

连接hiveserver2

beeline> !connect jdbc:hive2://hadoop102:10000

metastroe服务

bin/hive --service metastore

hive 启动元数据服务(metastore和hiveserver2)和优雅关闭脚本

启动: hive.sh start
关闭: hive.sh stop
重启: hive.sh restart
状态: hive.sh status

脚本如下

#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs

mkdir -p $HIVE_LOG_DIR

#检查进程是否运行正常,参数1为进程名,参数2为进程端口
function check_process()
{
    pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
    ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)
    echo $pid
    [[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}

function hive_start()
{
    metapid=$(check_process HiveMetastore 9083)
    cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
    cmd=$cmd" sleep4; hdfs dfsadmin -safemode wait >/dev/null 2>&1"
    [ -z "$metapid" ] && eval $cmd || echo "Metastroe服务已启动"
    server2pid=$(check_process HiveServer2 10000)
    cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
    [ -z "$server2pid" ] && eval $cmd || echo "HiveServer2服务已启动"
}

function hive_stop()
{
    metapid=$(check_process HiveMetastore 9083)
    [ "$metapid" ] && kill $metapid || echo "Metastore服务未启动"
    server2pid=$(check_process HiveServer2 10000)
    [ "$server2pid" ] && kill $server2pid || echo "HiveServer2服务未启动"
}

case $1 in
"start")
    hive_start
    ;;
"stop")
    hive_stop
    ;;
"restart")
    hive_stop
    sleep 2
    hive_start
    ;;
"status")
    check_process HiveMetastore 9083 >/dev/null && echo "Metastore服务运行正常" || echo "Metastore服务运行异常"
    check_process HiveServer2 10000 >/dev/null && echo "HiveServer2服务运行正常" || echo "HiveServer2服务运行异常"
    ;;
*)
    echo Invalid Args!
    echo 'Usage: '$(basename $0)' start|stop|restart|status'
    ;;
esac

常用交互命令

功能说明

命令

不进入hive的交互窗口执行sql

bin/hive -e "sql语句"

执行脚本中sql语句

bin/hive -f hive.sql

退出hive窗口

exit 或 quit

命令窗口中查看hdfs文件系统

dfs -ls /

命令窗口中查看hdfs文件系统

! ls /data/h

SQL类(特殊的)

说明

语句

查看hive中的所有数据库

show databases

用default数据库

use default

查询表结构

desc table_name

查看数据库

show databases

重命名表名

alter table table1 rename to table2

修改表中字段

alter table table_name change name user_name String

修改字段类型

alter table table_name change salary salary Double

创建外部表

create external table ....

查询外部表信息

desc formatted outsidetable

创建视图

create view view_name as select * from table_name .....

添加数据

load data local inpath 'xxx'  overwrite into table table_name partition(day='2021-12-01')

内置函数

(1) NVL

给值为NULL的数据赋值,它的格式是NVL( value,default_value)。它的功能是如果value为NULL,则NVL函数返回default_value的值,否则返回value的值,如果两个参数都为NULL ,则返回NULL

select nvl(column, 0) from xxx;

(2)行转列

函数

描述

CONCAT(string A/col, string B/col…)

返回输入字符串连接后的结果,支持任意个输入字符串

CONCAT_WS(separator, str1, str2,...)

第一个参数参数间的分隔符,如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间。

COLLECT_SET(col)

将某字段的值进行去重汇总,产生array类型字段

COLLECT_LIST(col)

函数只接受基本数据类型,它的主要作用是将某字段的值进行不去重汇总,产生array类型字段。

(3)列转行(一列转多行)

Split(str, separator): 将字符串按照后面的分隔符切割,转换成字符array。

EXPLODE(col):
将hive一列中复杂的array或者map结构拆分成多行。

LATERAL VIEW

用法:

LATERAL VIEW udtf(expression) tableAlias AS columnAlias

解释:lateral view用于和split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表。

准备数据源测试

movie

category

《功勋》

记录,剧情

《战狼2》

战争,动作,灾难

SQL

SELECT movie,category_name 
FROM movie_info 
lateral VIEW
explode(split(category,",")) movie_info_tmp  AS category_name ;

测试结果

《功勋》      记录
《功勋》      剧情
《战狼2》     战争
《战狼2》     动作
《战狼2》     灾难

窗口函数

(1)OVER()

定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化。

(2)CURRENT ROW(当前行)

n PRECEDING:往前n行数据

n FOLLOWING:往后n行数据

(3)UNBOUNDED(无边界)

UNBOUNDED PRECEDING 前无边界,表示从前面的起点

UNBOUNDED FOLLOWING后无边界,表示到后面的终点

SQL案例:由起点到当前行的聚合

select 
    sum(money) over(partition by user_id order by pay_time rows between UNBOUNDED PRECEDING and current row) 
from or_order;

SQL案例:当前行和前面一行做聚合

select 
    sum(money) over(partition by user_id order by pay_time rows between 1 PRECEDING and current row) 
from or_order;

SQL案例:当前行和前面一行和后一行做聚合

select 
    sum(money) over(partition by user_id order by pay_time rows between 1 PRECEDING AND 1 FOLLOWING )
from or_order;

SQL案例:当前行及后面所有行

select 
    sum(money) over(partition by user_id order by pay_time rows between current row and UNBOUNDED FOLLOWING  )
from or_order;

(4)LAG(col,n,default_val)

往前第n行数据,没有的话default_val

(5)LEAD(col,n, default_val)

往后第n行数据,没有的话default_val

SQL案例:查询用户购买明细以及上次的购买时间和下次购买时间

select 
	user_id,,pay_time,money,
	
	lag(pay_time,1,'1970-01-01') over(PARTITION by name order by pay_time) prev_time,
	
	lead(pay_time,1,'1970-01-01') over(PARTITION by name order by pay_time) next_time
from or_order;

(6)FIRST_VALUE(col,true/false)

当前窗口下的第一个值,第二个参数为true,跳过空值。

(7)LAST_VALUE (col,true/false)

当前窗口下的最后一个值,第二个参数为true,跳过空值。

SQL案例:查询用户每个月第一次的购买时间 和 每个月的最后一次购买时间

select
	FIRST_VALUE(pay_time) 
	    over(
	        partition by user_id,month(pay_time) order by pay_time 
	        rows between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING
	        ) first_time,
	
	LAST_VALUE(pay_time) 
	    over(partition by user_id,month(pay_time) order by pay_time rows between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING
	    ) last_time
from or_order;

(8)NTILE(n)

把有序窗口的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。(用于将分组数据按照顺序切分成n片,返回当前切片值)

SQL案例:查询前25%时间的订单信息

select * from (
    select User_id,pay_time,money,
    
    ntile(4) over(order by pay_time) sorted
    
    from or_order
) t
where sorted = 1;

4个By

(1)Order By

全局排序,只有一个Reducer。

(2)Sort By

分区内有序。

(3)Distrbute By

类似MR中Partition,进行分区,结合sort by使用。

(4) Cluster By

当Distribute by和Sorts by字段相同时,可以使用Cluster by方式。Cluster by除了具有Distribute by的功能外还兼具Sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC。

在生产环境中Order By用的比较少,容易导致OOM。

在生产环境中Sort By+ Distrbute By用的多。

排序函数

(1)RANK()

排序相同时会重复,总数不会变

1
1
3
3
5

(2)DENSE_RANK()

排序相同时会重复,总数会减少

1
1
2
2
3

(3)ROW_NUMBER()

会根据顺序计算

1
2
3
4
5

正则表达式

符号

功能

/

做为转义,即通常在“/”后面的字符不按原来意义解释,如/b/匹配字符“b”,当b前面加了反斜杠后//b/,转义为匹配一个单词的边界。-或-对正则表达式功能字符的还原,如““匹配它前面元字符0次或多次,/a/将匹配a,aa,aaa,加了"/"后,/a//将只匹配”a“。

^

匹配一个输入或一行的开头 ,/^a/匹配”an A“,而不匹配”An a“

$

匹配一个输入或一行的结尾,/a$/匹配”An a“,而不匹配”an A“

*

匹配前面原字符0次或多次,/ba*/将匹配b,ba,baa

+

匹配前面元字符1次或多次,/ba*/将匹配ba,ba,baaa

?

匹配前面元字符0次或1次,/ba?/将匹配b,ba

(x)

匹配x保存x在名为$1…$9的变量中

{n}

精确匹配n次

{n,}

匹配n次以上

{n,m}

匹配n-m次

[xyz]

字符集(character set),匹配这个集合中任一一个字符(或元字符)

[^xyz]

不匹配这个集合中的任何一个字符

[/b]

匹配一个退格符

/b

匹配一个单词的边界

/B

匹配一个单词的非边界

/d

匹配一个数字字符,//d/=/[0-9]/

/D

匹配一个非数字字符,//D/=/[^0-9]/

/n

匹配一个换行符

/r

匹配一个换行符

/S

匹配一个空白字符,包括/n,/r,/f,/t,/v等

/w

匹配一个可以组成单词的字符,包括下划线,如[/w]匹配”$5.98“中的5,等于[a-zA-Z0-9]

/W

匹配一个不可以组成单词的字符,如[/W]匹配”5.98“中的$,等于[^a-zA-Z0-9]

select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',2)

得到结果:abc

日期函数

datediff:返回结束日期减去开始日期的天数

datediff(string enddate, string startdate) 

select datediff('2021-11-20','2021-11-22')

date_add:返回开始日期startdate增加days天后的日期

date_add(string startdate, int days) 

select date_add('2021-11-20',3)

date_sub:返回开始日期startdate减少days天后的日期

date_sub (string startdate, int days) 

select date_sub('2021-11-22',3)

trunc 函数的用法

函数/方法

返回数据

trunc(add_months(current_date(),-1),'MM')

上月1号

trunc(current_date(),'MM')

本月1号

trunc(add_months(current_date(),1),'MM')

下月1号

trunc(current_date(),'YYYY')

今年年初日期

时间相关函数处理案例

1. 取得当前日期时间:

--取得当前日期:
select current_date();
输出:2021-08-14
--取得当前日期时间:
select current_timestamp();
输出:2021-08-14 13:14:57
--hive取得当前时间戳:
select unix_timestamp();
输出:1628911641

2. 日期时间转日期函数,返回日期时间字段中的日期部分,

-- 说明:字符串必须为:yyyy-MM-dd格式。

select to_date('2021-08-14 13:34:12');
输出:2021-08-14

3. 时间戳到转时间格式

--说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式

select from_unixtime(1323308945,’yyyy-MM-dd’);
输出:2011-12-08
select from_unixtime(1323308945,’yyyyMMdd’);
输出:20111208
--取得当前时间,相当于select current_timestamp();
select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:dd:ss');
输出:2021-08-14 03:14:57

4. 日期、时间戳、字符串类型格式化输出标准时间格式

select date_format(current_timestamp(),'yyyy-MM-dd HH:mm:ss');
输出:2021-08-14 11:14:46
select date_format(current_date(),'yyyy-MM-dd');
输出:2021-08-14
select date_format('2021-08-14','yyyy-MM-dd HH:mm:ss'); 
输出:2021-08-14 00:00:00

5. 获取当前时间的unix时间戳和日期转UNIX时间戳函数

select unix_timestamp();
输出:1628906623
select unix_timestamp('2021-08-14 10:05:20');
输出:1628935520

6. utc时间转换:

select from_utc_timestamp(current_timestamp(),8);
输出:2021-08-14 11:10:27.762
select to_utc_timestamp(current_timestamp(),8);
输出:2021-08-14 11:10:56.085

7. 日期转unix时间戳

select to_unix_timestamp('2021-08-14 11:10:27','yyyy-MM-dd HH:dd:ss');
输出:1628593227

8. 返回日期中的年/季度/月/日

select year('2021-08-14 10:05:20');
输出:2021
select quarter('2021-08-14 10:05:20');
输出:3
select month('2021-08-14 10:05:20');
输出:8
select day('2021-08-14 10:05:20');
输出:14

9. 返回日期中的时/分/秒

select hour('2021-08-14 10:05:20');
输出:10
select minute('2021-08-14 10:05:20');
输出:5
select second('2021-08-14 10:05:20');
输出:20

10. 返回日期在当年的第几周

select weekofyear('2021-08-14 10:05:20');
输出:32

11. 返回日期在当前周的第几天(注:周日为第1天)

select dayofweek('2021-08-14 10:05:20');  --周六
输出:7

12. 日期比较函数,返回开始日期减去结束日期的天数

说明:前者大于后者,返回值为正,否则,返回值为负。

select datediff('2021-08-14','2021-08-08');
输出:6
select datediff(current_date(),date_add(current_date(),-10));
输出:10
select datediff(current_date(),date_add(current_date(),10));
输出:-10

13. 日期减少函数,返回日期前n天的日期

select date_sub('2021-08-14',6);
输出:2021-08-08

14. 日期增加函数,返回日期后n天的日期

select date_add('2021-08-14',6);
输出:2021-08-20
--取得昨天日期:
select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);
select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);
-- 取得明天日期:
select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);
select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);

15. 返回两个日期之间包含的月数(结果为double类型)

select months_between('2021-10-14','2021-05-04');
输出:5.32258065

16. 获取日期月初(参数MM),年初日期(参数YY)

select trunc(current_date(),'MM');
输出:2021-08-01
select trunc(current_date(),'YY');
输出:2021-01-01

17. 获取日期当月最后一天

select last_day(current_date());
输出:2021-08-31

18. 返回当前日期之后的下个星期几的日期

说明:参数为MO,TU,WE,TH,FR,SA,SU,也可以是两个缩写字母可以是三个可以是全名。

select next_day('2021-08-14', 'TU'); --得到021-08-14后的下个周二
输出:2021-08-17
select next_date('2020-01-01','Fri');  --得到2020-01-01后的下个周五
输出:2020-01-03

19. yyyymmdd和yyyy-mm-dd日期间切换

思路:先转换成时间戳,再由时间戳转换为对应格式。

select from_unixtime(unix_timestamp('20210814','yyyymmdd'),'yyyy-mm-dd');
输出:2021-08-14
select from_unixtime(unix_timestamp('2021-08-14','yyyy-mm-dd'),'yyyymmdd') ;
输出:20210814

20. 取最近30天数据

seelct * from table where datediff(current_timestamp(),create_time)<=30;
--要从表中运行

21. 两个日期相差多少小时

select (unix_timestamp('2021-08-14 10:18:54')-unix_timestamp('2021-08-14 08:18:54'))/3600;
输出:2.0

22. 两个日期相差多少分钟

select (unix_timestamp('2021-08-14 10:18:54')-unix_timestamp('2021-08-14 08:18:54'))/60
输出:120.0

23. 返回上个月第一天和最后一天

--上个月第一天
select trunc(add_months(current_timestamp(),-1),'MM');
select concat(substr(add_months(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1),1,7),'-01');
select trunc(add_months(current_timestamp(),-1),'MM');
输出:2021-07-01

--上个月最后一天
select last_day(add_months(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1)) ;
select date_sub(trunc(current_timestamp(),'MM'),1);
输出:2021-07-31

-- 获取当月第一天
select trunc(current_timestamp(),'MM');
select from_unixtime(unix_timestamp(),'yyyy-MM-01');
输出:2021-08-01

-- 获取当月最后一天
select last_day(current_timestamp());
select  last_day(current_date());
输出:2021-08-31

Hive处理json字符串的函数

  1. get_json_object(json_string, path):从JSON字符串中提取指定的字段值,根据提供的路径返回一个JSON子字符串或一个原始值。例如:
SELECT get_json_object('{"name":"John","age":30}', '$.name');
-- 输出:John
SELECT get_json_object('{"name":"John","age":30}', '$.age');
-- 输出:30

  1. json_tuple(json_string, field1, field2, ...):从JSON字符串中提取指定的多个字段值,返回一个元组。例如:
SELECT json_tuple('{"name":"John","age":30}', 'name', 'age');
-- 输出:("John", "30")

  1. json_array_contains(json_array, value):检查一个JSON数组是否包含指定的值,返回一个布尔值。例如:
SELECT json_array_contains('[1, 2, 3]', 2);
-- 输出:true
SELECT json_array_contains('[{"name":"John","age":30}, {"name":"Bob","age":25}]', '{"name":"John","age":30}');
-- 输出:true

  1. get_json_object_index(json_string, index):从JSON数组中获取指定索引位置的元素。例如:
SELECT get_json_object_index('[1, 2, 3]', 1);
-- 输出:2
SELECT get_json_object_index('[{"name":"John","age":30}, {"name":"Bob","age":25}]', 0);
-- 输出:{"name":"John","age":30}

  1. json_array_length(json_array):获取JSON数组的长度。例如:
SELECT json_array_length('[1, 2, 3]');
-- 输出:3
SELECT json_array_length('[{"name":"John","age":30}, {"name":"Bob","age":25}]');
-- 输出:2

Impala(时间处理,可类比到hive可用)

1. 获取当前时间

timestamp 样式2021-12-10 04:36:48.147046000

bigint 样式 1639110956

函数/方法

输出类型

说明/样式

current_timestamp()

timestamp

所在时区的当前时间

now()

timestamp

所在时区的当前时间

unix_timestamp()

bigint

所在时区的当前时间戳

utc_timestamp

timestamp

UTC时区的当前时间

timeofday()

string

Fri Dec 10 12:39:46 2021 CST

2. 获取时间指定单位函数

序号

函数/方法

输出类型

说明/样式

1

year(timestamp/date)

int

获取年 yyyy

2

quarter(timestamp/date)

int

获取季度(1,2,3,4)

3

month(timestamp/date)

int

获取月

4

monthname(timestamp/date)

string

获取月份名称 December

5

week(timestamp/date)

int

获取周(1-53)

6

weekofyear(timestamp/date)

int

获取周(1-53)

7

dayofweek(timestamp/date)

int

获取天(本周第多少天,周日算第一天)

8

dayname(timestamp/date)

string

获取天(星期几)Friday

9

next_day(timestamp/date, 10

day(string))

timestamp/date

11

day(timestamp/date)

int

获取天(本月第多少天)

12

dayofmonth(timestamp/date)

int

获取天(本月第多少天)

13

last_day(timestamp/date)

timestamp/date

获取天(本月的最后一天日期)

14

dayofyear(timestamp/date)

int

获取天(本年第多少天)

15

hour(timestamp/date)

int

获取小时

16

minute(timestamp date)

int

获取分钟

17

second(timestamp date)

int

获取秒

18

millisecond(timestamp date)

int

获取毫秒

19

extract (YEAR FROM timestamp)

bigint

获取参数指定的时间单位 YEAR MONTH DAY  HOUR MINUTE SECOND

20

date_part('year',timestamp)

bigint

获取参数指定的时间单位 YEAR MONTH DAY  HOUR MINUTE SECOND

21

trunc(timestamp/date,unit)

timestamp/date

获取截断为指定单位的时间

unit

截取说明

SYYYY,YYYY,YEAR,SYEAR,YYY,YY,Y

Q

季节

MONTH,MON,MM,RM

WW

最近的日期是与一年中的第一天相同的日期

W

最近的日期是与该月的第一天相同的星期几

DDD,DD,J

DAY,DY,D

星期几(星期一)的开始

HH,HH12,HH24

小时

MI

分钟

3. 时间比较函数

序号

函数/方法

输出类型

说明/样式

1

datediff(timestamp enddate,startdate)

int

返回endDate比startDate多多少天

2

int_months_between(timestamp t1,t2)

int

返回两个日期相差的整数月份个数

3

months_between(timestamp t1,t2)

double

返回浮点数的月数相差的数

4

date_cmp(DATE date1, DATE date2)

int

比较是否相等,返回-1,0,1,null四种数值

5

timestamp_cmp(timestamp t1,timestamp t2)

int

比较是否相等,返回-1,0,1,null四种数值

4. 时间格式转换函数

序号

函数/方法

输出类型

说明/样式

1

to_date(timestamp date)

string

返回时间戳对应的date

2

to_timestamp(bigint unixtime)

timestamp

返回整数对应的timestamp值

3

to_timestamp(string date,string pattern)

timestamp

返回字符串对应的timestamp值

4

to_utc_timestamp(timestamp t,string timezone)

timestamp

指定时区的时间戳转化为UTC时区的时间戳

5

from_timestamp(timestamp t,string pattern)

string

把timestamp按照pattern进行格式化

6

from_timestamp(string date,string pattern)

string

把date按照pattern进行格式化

7

from_unixtime(bigint unixtime)

string

把时间戳秒数转化为本地地区中的字符串

8

from_unixtime(bigint unixtime,string pattern)

string

时间戳转化为本地时区字符串,pattern格式

9

from_utc_timestamp(timestamp t,string timezone)

timestamp

UTC时区指定时间戳转化为指定时区时间戳

10

unix_timestamp(string datetime)

bigint

把string类型的date或日期转化成时间戳Unix

11

unix_timestamp(timestamp datetime)

bigint

把string类型的timestamp转化成时间戳Unix

12

unix_timestamp(string datetime,string pattern)

bigint

日期按pattern转化成时间戳Unix

5. 时间计算函数

序号

函数/方法

输出类型

说明/样式

1

years_add(timestamp/date date, int/bigint years)

timestamp/date

增加指定年数

2

years_sub(timestamp/date date, int/bigint years)

timestamp/date

减少指定年数

3

months_add(timestamp/date date, int/bigint months)

timestamp/date

增加指定月数

4

months_sub(timestamp/date date, int/bigint months)

timestamp/date

减少指定月数

5

add_months(timestamp/date date, int/bigint months)

timestamp/date

增加指定月数

6

weeks_add(timestamp/date date, int/bigint weeks)

timestamp/date

增加指定周数

7

weeks_sub(timestamp/date date, int/bigint weeks)

timestamp/date

减少指定周数

8

days_add(timestamp/date startdate, int/bigint days)

timestamp/date

增加指定天数

9

days_sub(timestamp/date startdate, int/bigint days)

timestamp/date

减少指定天数

10

date_add(timestamp/date startdate, int/bigint days)

timestamp/date

增加指定天数

11

date_sub(timestamp/date startdate, int/bigint days)

timestamp/date

减少指定天数

12

adddate(timestamp/date startdate, int/int days)

timestamp/date

增加指定天数

13

subdate(timestamp/date startdate,bigint/int days)

timestamp/date

减少指定天数

14

hours_add(timestamp date, int/bigint hours)

timestamp

增加指定小时

15

hours_sub(timestamp date, int/bigint hours)

timestamp

减少指定小时

16

minutes_add(timestamp date, int/bigint minutes)

timestamp

增加指定分钟

17

minutes_sub(timestamp date, int/bigint minutes)

timestamp

减少指定分钟

18

seconds_add(timestamp date, int/bigint seconds)

timestamp

增加指定秒数

19

seconds_sub(timestamp date, int/bigint seconds)

timestamp

减少指定秒数

20

milliseconds_add(timestamp t, int/bigint s)

timestamp

增加指定毫秒数

21

milliseconds_sub(timestamp t, int/bigint s)

timestamp

减少指定毫秒数

22

microseconds_add(timestamp t, int/bigint s)

timestamp

增加指定微秒数

23

microseconds_sub(timestamp t, int/bigint s)

timestamp

减少指定微秒数

24

nanoseconds_add(timestamp t, int/bigint s)

timestamp

增加指定纳秒数

25

nanoseconds_sub(timestamp t, int/bigint s)

timestamp

减少指定纳秒数

26

date_add(timestamp/date startdate, interval_expression)

timestamp/date

使用参数计算日期增量值(增加)

27

date_sub(timestamp/date startdate, interval_expression)

timestamp/date

使用参数计算日期增量值(减少)


Redis

启动类

key

命令

功能说明

keys  *

查看当前库的所有键

exists

判断某个键是否存在

type

查看键的类型

del

删除某个键

expire  

为键值设置过期时间,单位秒

ttl

查看还有多久过期,-1表示永不过期,-2表示已过期

dbsize

查看当前数据库中key的数量

flushdb

清空当前库

Flushall

通杀全部库

String

命令

功能说明

get

查询对应键值

set  

添加键值对

append  

将给定的追加到原值的末尾

strlen

获取值的长度

setnx  

只有在key 不存在时设置key的值

incr

将key中存储的数字值增1只能对数字值操作,如果为空,新增值为1

decr

将key中存储的数字值减1只能对数字之操作,如果为空,新增值为-1

incrby /decrby  步长

将key中存储的数字值增减,自定义步长

mset    

同时设置一个或多个key-value对

mget    

同时获取一个或多个value

msetnx    

同时设置一个或多个key-value对,当且仅当所有给定的key都不存在

getrange  <起始位置> <结束位置>

获得值的范围,类似java中的substring

setrange  <起始位置>

用覆盖所存储的字符串值,从<起始位置>开始

setex  <过期时间>

设置键值的同时,设置过去时间,单位秒

getset  

以新换旧,设置了新值的同时获取旧值

List

命令

功能说明

lpush/rpush      

从左边/右边插入一个或多个值。

lpop/rpop  

从左边/右边吐出一个值。值在键在,值光键亡。

rpoplpush    

从列表右边吐出一个值,插到列表左边

lrange  

按照索引下标获得元素(从左到右)

lindex  

按照索引下标获得元素(从左到右)

llen

获得列表长度

linsert   before  

在的后面插入 插入值

lrem    

从左边删除n个value(从左到右)

Set

命令

功能说明

sadd      ....

将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。

smembers

取出该集合的所有值。

sismember  

判断集合是否为含有该值,有返回1,没有返回0

scard  

返回该集合的元素个数。

srem    ....

删除集合中的某个元素。

spop

随机从该集合中吐出一个值。

srandmember  

随机从该集合中取出n个值。不会从集合中删除

sinter  

返回两个集合的交集元素。

sunion  

返回两个集合的并集元素。

sdiff  

返回两个集合的差集元素。

Hash

命令

功能说明

hset    

给集合中的  键赋值

hget  

从集合 取出 value

hmset      ...

批量设置hash的值

hexists key  

查看哈希表 key 中,给定域 field 是否存在。

hkeys

列出该hash集合的所有field

hvals

列出该hash集合的所有value

hincrby    

为哈希表 key 中的域 field 的值加上增量 increment

hsetnx    

将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

zset(Sorted set)

命令

功能说明

zadd       ...

将一个或多个 member 元素及其 score 值加入到有序集 key 当中

zrange      [WITHSCORES]

返回有序集 key 中,下标在 之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。

zrangebyscore key min max [withscores] [limit offset count]

返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

zrevrangebyscore key max min [withscores] [limit offset count]

同上,改为从大到小排列。

zincrby  

为元素的score加上增量

zrem    

删除该集合下,指定值的元素

zcount    

统计该集合,分数区间内的元素个数

zrank  

返回该值在集合中的排名,从0开始。


启动

./start-cluster.sh

run

./bin/flink run [OPTIONS]

./bin/flink run -m yarn-cluster -c com.wang.flink.WordCount /opt/app/WordCount.jar

OPTIONS

功能说明

-d

detached 是否使用分离模式

-m

jobmanager 指定提交的jobmanager

-yat

–yarnapplicationType 设置yarn应用的类型

-yD

使用给定属性的值

-yd

–yarndetached 使用yarn分离模式

-yh

–yarnhelp yarn session的帮助

-yid

–yarnapplicationId 挂到正在运行的yarnsession上

-yj

–yarnjar Flink jar文件的路径

-yjm

–yarnjobManagerMemory jobmanager的内存(单位M)

-ynl

–yarnnodeLabel 指定 YARN 应用程序 YARN 节点标签

-ynm

–yarnname 自定义yarn应用名称

-yq

–yarnquery 显示yarn的可用资源

-yqu

–yarnqueue 指定yarn队列

-ys

–yarnslots 指定每个taskmanager的slots数

-yt

yarnship 在指定目录中传输文件

-ytm

–yarntaskManagerMemory 每个taskmanager的内存

-yz

–yarnzookeeperNamespace 用来创建ha的zk子路径的命名空间

-z

–zookeeperNamespace 用来创建ha的zk子路径的命名空间

-p

并行度

-yn

需要分配的YARN容器个数(=任务管理器的数量)

info

./bin/flink info [OPTIONS]

OPTIONS

功能说明

-c

程序进入点,主类

-p

并行度

list

./bin/flink list [OPTIONS]

OPTIONS

功能说明

-a

–all 显示所有应用和对应的job id

-r

–running 显示正在运行的应用和job id

-s

–scheduled 显示调度的应用和job id

-m

–jobmanager 指定连接的jobmanager

-yid

–yarnapplicationId 挂到指定的yarn id对应的yarn session上

-z

–zookeeperNamespace 用来创建ha的zk子路径的命名空间

stop

./bin/flink stop  [OPTIONS] 

OPTIONS

功能说明

-d

在采取保存点和停止管道之前,发送MAX_WATERMARK

-p

savepointPath 保存点的路径 'xxxxx'

-m

–jobmanager 指定连接的jobmanager

-yid

–yarnapplicationId 挂到指定的yarn id对应的yarn session上

-z

–zookeeperNamespace 用来创建ha的zk子路径的命名空间

cancel(弱化)

./bin/flink cancel  [OPTIONS] 

OPTIONS

功能说明

-s

使用 "stop "代替

-D

允许指定多个通用配置选项

-m

要连接的JobManager的地址

-yid

–yarnapplicationId 挂到指定的yarn id对应的yarn session上

-z

–zookeeperNamespace 用来创建ha的zk子路径的命名空间

savepoint

./bin/flink savepoint  [OPTIONS] 

OPTIONS

功能说明

-d

要处理的保存点的路径

-j

Flink程序的JAR文件

-m

要连接的JobManager的地址

-yid

–yarnapplicationId 挂到指定的yarn id对应的yarn session上

-z

–zookeeperNamespace 用来创建ha的zk子路径的命名空间

你可能感兴趣的:(大数据,工具,大数据)