入门
我是参考的这位博主,非常好理解和上手如何在 Linux 中创建并运行 Shell 脚本(Bash 初学者教程)_创建、运行shell脚本的步骤-CSDN博客https://blog.csdn.net/m0_46278037/article/details/120457468
这里有一点值得提到:在Ubuntu中创建新文件直接右键实现不了,需要在命令行进入目标文件夹,然后再使用touch命令创建一个空白的.sh文件,例如:`touch test.sh`。
尝试
首先明确:我只是为了混过大作业,不需要在系统的任何目录下都可以运行脚本,故没有添加系统变量,采用了原始的./XXX.sh方式运行。
菜单栏
参考了这个博主的思路和写法:linux shell编程之菜单选择(一)_创建一个命令菜单,显示菜单项并提示用户选择。-CSDN博客https://blog.csdn.net/XSL1990/article/details/8241416 产生了疑问:原博主中菜单的EOF是干嘛的?
发现问题解决问题!!了解之后知道EOF和cat>>EOF形成固定用法,代表将多行字符串输入到文件里。具体可以看这个链接,翻到最后就是Bash 中的 Cat EOF
我最终选择不用上述方法,因为hive的语句数量会在bash"xxx"中受到限制。
我选用了github上面一位同学的简便方法:(链接:GitHub - Rafael8830/Hadoop_OMS: Hadoop大作业:商业订单管理系统)
我根据我的需要进行了改编:
#!/bin/bash
while true
do
printf "========================================================================================\n"
printf "#############################欢迎来到安阳热门景点旅游管理系统#############################\n"
printf "========================================================================================\n"
printf "【查询选择】\n"
printf "1.查看景点信息现状\n"
printf "2.查询缺失信息的数据\n"
printf "3.添加新的景点\n"
printf "4.编辑景点信息\n"
printf "5.删除景点信息\n"
printf "6.价格排行榜(从高到低)\n"
printf "7.价格排行榜(从低到高)\n"
printf "8.退出系统\n"
printf "========================================================================================\n"
read -p "请选择查询项目 > " pin
if [ "$pin" -eq "1" ]; then
echo 景点总数:
hive -e "
use hotview;
select count(*) from ay"
echo 缺失景区等级的景区数:
hive -e "
use hotview;
select count(*) from ay where level ='无';"
echo 缺失景点详细地址的景区数:
hive -e "
use hotview;
select count(*) from ay where address='未知';"
echo 缺失景点介绍的景区数:
hive -e "
use hotview;
select count(*) from ay where introduction='未知';"
echo 缺失景区价格的景区数:
hive -e "
use hotview;
select count(*) from ay where price ='未知';"
echo 缺失相关景点推荐的景区数:
hive -e "
use hotview;
select count(*) from ay where relation=0"
elif [ "$pin" -eq "2" ]; then
echo 缺失景区等级的景区
hive -e "
select * from ay where level ='无';"
echo 缺失景点详细地址的景区
hive -e "
select * from ay where ddress='未知';"
echo 缺失景区介绍的景区
hive -e "
use hotview;
select * from ay where introduction ='未知';
"
echo 缺失景区价格的景区
hive -e "
use hotview;
select * from ay where price ='未知';
"
echo 缺失景点推荐的景区
hive -e "
use hotview;
select * from ay where relation=0;
"
elif [ "$pin" -eq "3" ]; then
read -p "请输入需要添加的景区名称 > " para1
read -p "请输入需要添加的景区级别 > " para2
read -p "请输入需要添加的景区地区 > " para3
read -p "请输入需要添加的景区详细地址 > " para4
read -p "请输入需要添加的景区介绍 > " para5
read -p "请输入需要添加的景区价格 > " para6
read -p "请输入需要添加的景区相关景点个数 > " para7
hive -e "
use hotview;
insert into table ay values($para1,$para2,$para3,$para4,$para5,$para6,$para7);
"
elif [ "$pin" -eq "4" ]; then
read -p "请输入需要编辑的景区名称 > " para8
hive -e "
use hotview;
"
elif [ "$pin" -eq "5" ]; then
hive -e"
use hotview;
select customerName
from ruozedata_order
group by customerName;
"
elif [ "$pin" -eq "6" ]; then
read -p "请输入需要查询的客户名 > " para6
hive -e"
use hotview;
select customerName,orderid,ordertime,paymoney,detail
from ruozedata_order
join state_detail on (state_detail.state=ruozedata_order.state)
where customerName=\"$para6\";
"
elif [ "$pin" -eq "7" ]; then
hive -e"
use hotview;
select street_code from ruozedata_area;
"
elif [ "$pin" = "8" ]; then
echo "成功退出系统!"
exit 0
fi
done
我想在hive使用查询语句的时候显示出来表头,故在hive运行时执行了(后面发现每次想要显示表头都要执行一遍set命令)
set hive.cli.print.header=true;
成功!
hive的updata操作
好像不支持??!!查一下版本hive --version3.1.3版本支持!开始操作!
e。。。。。。创建内部表、进行update和delete操作还是报错 内容是:Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask,如图:
不管了用insert overwrite吧,重写一下!
发现几篇很好的科普文~非常贴合我的hive版本
【大数据】Hive入门➕安装(尚硅谷大数据Hive 3.1.3教程)_尚硅谷hive文档-CSDN博客https://blog.csdn.net/YG15165/article/details/132529562Hive3.1.3安装和使用指南_厦大数据库实验室博客 (xmu.edu.cn)https://dblab.xmu.edu.cn/blog/4309/