当前位置:   article > 正文

【Spark实训】-- Spark SQL结构化数据文件处理 ②_spark sql某航空公司积累了大量的会员档案信息和其乘坐航班记录。

spark sql某航空公司积累了大量的会员档案信息和其乘坐航班记录。

目录

题目:统计分析航空公司客户数据的空值以及异常值。

1、训练要点

2、需求说明

3、实现思路及步骤

4、具体实现过程代码与截图:


题目:统计分析航空公司客户数据的空值以及异常值

1、训练要点

(1)、Spark SQL CLI的配置。

(2)、在Spark SQL CLI中操作Hive表。

2、需求说明

     某航空公司积累了大量的会员档案和其乘坐航班记录。抽取2012-04-01~2014-03-31内所有乘客的详细数据,总共62988条记录。其中包含了会员卡号、入会时间、性别等属性。

      原始数据中存在票价(sum_yr_1)为空值的情况。票价为空值可能是客户不存在乘机记录造成的。同时原始数据中存在票价(sum_yr_1)最小值为0,折扣率(avg_discount)最小值为0,总飞行千米数(seg_km_sum)大于0的数据,这些数据可能是客户乘坐0折机票或积分兑换造成的。现要求统计sum_yr_1、seg_km_sum、avg_discount这3个字段的空值记录,保存到null_count表,以及统计sum_yr_1、seg_km_sum、avg_discount这3个字段的最小值并保存到min_count表。

3、实现思路及步骤

(1)、检查是否已配置Spark SQL CLI,若没有配置Spark SQL CLI环境,则先配置Spark SQL CLI。

(2)、启动spark-sql。

(3)、创建数据库air,并在air数据库下新建表air_data_base,建表语句可参考代码。

(4)、导入数据到air_data_base表。

(5)、使用hiveContext.sql()方式统计SUM_YR_1、SEG_KM_SUM、AVG_DISCOUNT这3个字段的空值记录数,保存到null_count表中。

(6)、使用hiveContext.sql()方式统计SUM_YR_1、SEG_KM_SUM、AVG_DISCOUNT这3个字段的最小值,保存到null_count表中。

4、具体实现过程代码与截图:

一、启动Hive的metastore服务,使用Hive CLI客户端登录hive

1.通过jps命令查看 RunJar进程存在

[root@node1 hive237]# jps

 如果不存在,启动metastore,开启RunJar命令:

[root@node1 bin]# nohup /myserver/hive237/bin/hive --service metastore  &

2.Hive CLI客户端登录hive(node1结点)

[root@node1 bin]# /myserver/hive237/bin/hive

二、在hive上建数据库和表

1.建库air

  1. hive> create database air;
  2. OK
  3. Time taken: 9.871 seconds
  4. hive> show databases;
  5. OK
  6. air
  7. default
  8. law
  9. Time taken: 0.223 seconds, Fetched: 3 row(s)

 2.在数据库air里建表

  1. use air;
  2. create table air_data_base(
  3. member_no string,
  4. ffp_date string,
  5. first_flight_date string,
  6. gender string,
  7. ffp_tier int,
  8. work_city string,
  9. work_province string,
  10. work_country string,
  11. age int,
  12. load_time string,
  13. flight_count int,
  14. bp_sum bigint,
  15. ep_sum_yr_1 int,
  16. ep_sum_yr_2 bigint,
  17. sum_yr_1 bigint,
  18. sum_yr_2 bigint,
  19. seg_km_sum bigint,
  20. weighted_seg_km double,
  21. last_flight_date string,
  22. avg_flight_count double,
  23. avg_bp_sum double,
  24. begin_to_first int,
  25. last_to_end int,
  26. avg_interval float,
  27. max_interval int,
  28. add_points_sum_yr_1 bigint,
  29. add_points_sum_yr_2 bigint,
  30. exchange_count int,
  31. avg_discount float,
  32. p1y_flight_count int,
  33. l1y_flight_count int,
  34. p1y_bp_sum bigint,
  35. l1y_bp_sum bigint,
  36. ep_sum bigint,
  37. add_point_sum bigint,
  38. eli_add_point_sum bigint,
  39. l1y_eli_add_points bigint,
  40. points_sum bigint,
  41. l1y_points_sum float,
  42. ration_l1y_flight_count float,
  43. ration_p1y_flight_count float,
  44. ration_p1y_bps float,
  45. ration_l1y_bps float,
  46. point_notflight int
  47. )row format delimited fields terminated by ','
  48. STORED AS TEXTFILE;

show tables;

 3. 加载数据到air_data_base表

(1)把air_data_base.txt上传到node1的根目录,并上传到hdfs上/user/root/目录下(在新打开 的node1,ssh连接上操作)

[root@node1 ~]# hdfs dfs -put air_data_base.txt /user/root/

(2)加载数据

load data inpath '/user/root/air_data_base.txt' overwrite into table air_data_base;

hive> select count(*) from air_data_base;

 三、数据分析

       1.统计观测窗口的票价收入(SUM_YR_1)、观测窗口的总飞行公里数(SEG_KM_SUM)和平均折扣率(AVG_DISCOUNT)三个字段的空值记录,并将结果保存到名为null_count的表中。

  1. hive> create table null_count as
  2. select * from
  3. (select count(*) as sum_yr_1_null_count from air_data_base where sum_yr_1 is null)
  4. sum_yr_1_null,
  5. (select count(*) as seg_km_sum_null_count from air_data_base where seg_km_sum is null)
  6. seg_km_sum_null,
  7. (select count(*) as avg_discount_null_count from air_data_base where avg_discount is null)
  8. avg_discount_null ;

  1. hive> select * from null_count;
  2. 592 1 1
  3. Time taken: 0.45 seconds, Fetched 1 row(s)

 2. 统计air_data_table表中观测窗口的SUM_YR_1(票价收入)、SEG_KM_SUM(总飞行公里数)和AVG_DISCOUNT(平均折扣率)三列的最小值min_count表中。

  1. hive> create table min_count as
  2. select min(sum_yr_1) as sum_yr_1_min,
  3. min(seg_km_sum) as seg_km_sum_min,
  4. min(avg_discount) as avg_discount_min from air_data_base ;
  5. hive> select * from min_count;
  6. 0 368 0.0
  7. Time taken: 0.367 seconds, Fetched 1 row(s)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/572513
推荐阅读
相关标签
  

闽ICP备14008679号