题目来自华为Talent官网《华为ICT大赛 - 云赛道学习空间(中国区)》,如有侵权,请及时联系本人删除文章。
非官方解析,仅供参考。
任务1:环境准备 和 任务2:MRS服务基础操作的考点1:基础操作的a-c问 跳过。
中间我有换平台,但是解题方法一样。
任务2:MRS服务基础操作
考点1:基础操作
d.创建/user/exam/log目录并上传foundation_log.csv数据到该目录下。
这题是创建hdfs上的目录并把数据上传到hdfs上,不是创建在linux上
# 创建目录并上传数据
hdfs dfs -mkdir -p /user/exam/log
hdfs dfs -put /root/hive/log/foundation_log.csv /user/exam/log
# 截图要求d:查看上传路径文件信息
hdfs dfs -ls /user/exam/log
任务3:Hive数据处理
考点1:数据处理
a.进入Hive终端创建外部表;
# 进入hive命令行
hive
# 创建外部表
create external table foundation_log(
realtime_start String,
realtime_end String,
`date` String,
value Double)
row format delimited
fields terminated by ','
stored as textfile
location '/user/exam/log';
# 截图要求a:创建完成后查看表结构
desc foundation_log;
b.导入hdfs中的数据到a创建的表中;
(以下均在hive命令行执行)
# 数据导入表中
load data inpath '/user/exam/log/foundation_log.csv' into table foundation_log;
# 截图要求b:使用HDFS的ls命令查看上传数据后的目录
dfs -ls /user/exam/log
c.查看表前10行数据,并显示全部字段;
# 截图要求c:查看前10行数据
select * from foundation_log limit 10;
d.统计每个日期的当日基金平均值;
这题我不知道他在问什么,我也忘记我当时比赛怎么写的了,放个我当时运行出来的结果:
e.计算当前表中基金价格不小于“2000”的数据量;
# 截图要求d
select count(*) from foundation_log where value>=2000;
f.查询日期在“2019/12/9”这一天的基金价格;
# 截图要求f:查询价格截图保存
select * from foundation_log where `date` = '2019/12/9';
g.新建foundation_opt表,结构和foundation_log表一样,执行insert语句将log表中日期在2010年后的数据插入opt表,并查看opt表前5行数据。
# 建表
create table foundation_opt(
realtime_start String,
realtime_end String,
`date` String,
value Double)
row format delimited
fields terminated by ','
stored as textfile;
# 插入数据
insert into table foundation_opt
select * from foundation_log where split(`date`,'/')[0]>2010;
# 截图要求g:查看前5行
select * from foundation_opt limit 5;
任务4:Spark SQL数据统计
考点1:数据统计分析
a.进入Spark shell终端,初始化HiveContext,变量命名为sqlContext;
# 进入spark shell
shark-shell
# 进入后需要导入一个包
import org.apache.spark.sql.hive.HiveContext
# 然后初始化变量
# 截图要求a就是下面这行代码和运行后的结果
val sqlContext = new HiveContext(sc)
b.使用变量执行sql语句,创建Hive表foundation_spark,格式和hive中log表一致
# 建表
sqlContext.sql("create table foundation_spark(realtime_start String,realtime_end String,`date` String,value Double)")
# 查看是否建表成功
sqlContext.sql("show tables").show()
sqlContext.sql("desc foundation_spark").show()
再次重申,本文非官方解析,仅供参考
如有侵权,请及时联系本人删除文章。