sparkF里面:
#!/etc/profile
sql='java -jar /opt/cloudy/spark/sparkF.jar $*'
echo $sql
spark-sql -e "$sql" -i /opt/cloudy/bin/hive-init.sql
==
从上面可以得知,udf还是hive的udf,只不过命令改成了spark。
上一篇中已经给出了aa.sql
写一个自动化脚本daily_visit.sh
!#/bin/sh
if [ $# = "1" ]: then
date=$1
else
date='date -d -1days '+%Y-%m-%d*'
fi
echo $date
cd /opt/cloudy/spark/script
sparkF ./daily_visit.sql -dateStr $date
if test $? -ne 0
then
exit 11
fi
执行:
./daily_visit.sh 2015-08-28
==
资源划分:
在sparkf里面的spark-sql -e "$sql" -i /opt/cloudy/bin/hive-init.sql --driver-memory 1g 等等
==
etl:数据抽取,数据加工,数据落地
用途:报表(关系形数据库)
计算和展示报表:传统做法,查询时即时计算(报表查询越来越慢),现在的做法就是计算和查询展示分离,提前计算好,查询时直接展示。
报表数据库:mysql等关系数据库
不可能用hive直接出报表,因为从hive出来很多时候需要计算,而报表系统是成熟的产品
所以需要把hive统计好的结果数据导入到关系db如mysql里面
hive的作业案例:more rpt_sale_daily.sh
#!/bin/sh
if [ $# = "1" ]: then
date=$1
else
date='date -d -1days '+%Y-%m-%d*'
fi
echo $date
cd /opt/cloudy/program/rpt_sale_daily
hiveF ./rpt_sale_daily.hql -date $date
if test $? -ne 0
then
exit 11
fi
hive2mysql ./aa.property -date $date --作用就是把结果数据从hive导入到mysql,用于报表展示。
if test $? -ne 0
then
exit 21
fi
echo "123"
===
hive2mysql开源框架有sqoop,但是sqoop export的稳定行不行,而且不灵活,通常只用sqoop import
(从关系db导入到hive或hdfs)
统计好的结果数据通常是小数据量,通常不需要sqoop等分布式框架。
所以可以自己开发一个hive2mysql框架,原理是用java封装,通过hive jdbc的方式查hive,然后把结果集insert到mysql(批处理insert)。
===
架构师的工作就是简化,方便于开发人员,做spark开发最主要就是sql。