个人博客:https://chunyu.work/
文章非原创 内容来源于微信公众号 「大数据左右手」
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 ./ |
|
文件上传到集群(从本地) |
hhdfs 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
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开始。 |
Flink
启动
./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] <Job ID>
|
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] <Job ID>
|
OPTIONS |
功能说明 |
|
-s |
使用 "stop "代替 |
|
-D |
允许指定多个通用配置选项 |
|
-m |
要连接的JobManager的地址 |
|
-yid |
–yarnapplicationId 挂到指定的yarn id对应的yarn session上 |
|
-z |
–zookeeperNamespace 用来创建ha的zk子路径的命名空间 |
savepoint
./bin/flink savepoint [OPTIONS] <Job ID>
|
OPTIONS |
功能说明 |
|
-d |
要处理的保存点的路径 |
|
-j |
Flink程序的JAR文件 |
|
-m |
要连接的JobManager的地址 |
|
-yid |
–yarnapplicationId 挂到指定的yarn id对应的yarn session上 |
|
-z |
–zookeeperNamespace 用来创建ha的zk子路径的命名空间 |
文章非原创,内容来源于微信公众号 「大数据左右手」