Hive作业

  最近学习Hive。实现了其中几个作业,如下。Hql语句没怎么调整格式,见谅。

Hive练习二中的题目

(1). 2017 年4 月1 日各个商品品牌的交易笔数,按照销售交易从多到少排序

1 select
2 brand,
3 count(*) as totalCount
4 from
5 record
6 join brand_dimension on record.bid = brand_dimension.bid
7 where record.trancation_date= ‘2017-04-01‘
8 group by brand_dimension.brand
9 order by totalCount desc;

输出

+------------+-------------+--+
|   brand    | totalcount  |
+------------+-------------+--+
| SAMSUNG    | 2           |
| WULIANGYE  | 1           |
| PUMA       | 1           |
| OPPO       | 1           |
| DELL       | 1           |
+------------+-------------+--+

(2). 不同性别消费的商品类别情况(不同性别消费不同商品类别的总价)

 1 select
 2 gender,
 3 category,
 4 sum(price) as totalPrice
 5 from record
 6 join user_dimension on record.uid = user_dimension.uid
 7 join brand_dimension on record.bid = brand_dimension.bid
 8 group by gender,
 9 category
10 order by
11 gender,
12 category,
13 totalPrice;

输出

+---------+------------+-------------+--+
| gender  |  category  | totalprice  |
+---------+------------+-------------+--+
| M       | computer   | 252         |
| M       | food       | 429         |
| M       | sports     | 120         |
| M       | telephone  | 1669        |
+---------+------------+-------------+--+

Hive练习三中的题目

(1). 谁不是经理

1 select
2 name
3 from
4 employees
5 where
6 size(subordinates)<=0;

输出

+-------------------+---------------+--+
|       name        | subordinates  |
+-------------------+---------------+--+
| Todd Jones        | []            |
| Bill King         | []            |
| Stacy Accountant  | []            |
+-------------------+---------------+--+
3 rows selected (0.092 seconds)

(2). 谁住在邮编比60500 大的地区

1 select name,address.zip from employees where address.zip> 60500;

输出

+-------------------+--------+--+
|       name        |  zip   |
+-------------------+--------+--+
| John Doe          | 60600  |
| Mary Smith        | 60601  |
| Todd Jones        | 60700  |
| Stacy Accountant  | 60563  |
+-------------------+--------+--+
4 rows selected (0.123 seconds)

(3). 联邦税超过0.15 的雇员

1 select
2 name,
3 deductions[‘Federal Taxes‘]
4 from
5 employees
6 where deductions[‘Federal Taxes‘] > 0.15+1e-5;

输出

+---------------+---------------+--+
|     name      | federaltaxes  |
+---------------+---------------+--+
| John Doe      | 0.2           |
| Mary Smith    | 0.2           |
| Boss Man      | 0.3           |
| Fred Finance  | 0.3           |
+---------------+---------------+--+
4 rows selected (0.126 seconds)

(4). 谁住在Drive 或Par 街道

1 select
2 name,
3 address
4 from
5 employees
6 where address.street rlike ‘^.*(Drive|Par).*$‘;

输出

---------------+------------------------------------------------------------------------------+--+
|     name      |                                   address                                    |
+---------------+------------------------------------------------------------------------------+--+
| Boss Man      | {"street":"1 Pretentious Drive.","city":"Chicago","state":"IL","zip":60500}  |
| Fred Finance  | {"street":"2 Pretentious Drive.","city":"Chicago","state":"IL","zip":60500}  |
+---------------+------------------------------------------------------------------------------+--+
2 rows selected (0.218 seconds)

Hive练习十中的题目

1. 建表

创建并 使用 database tmall

1 create database tmall;
2 use tmall;

建表 product,格式 text

 1 create table if not exists product(
 2 item_id string,
 3 pic_url string,
 4 category string,
 5 brand_id string,
 6 seller_id string
 7 )
 8 row format delimited
 9 fields terminated by ‘,‘
10 lines terminated by ‘\n‘
11 stored as textfile;

建表 review,格式 text

 1 create table if not exists review(
 2 item_id string,
 3 user_id string,
 4 feedback int,
 5 feedback_time timestamp,
 6 feedback_pic_url string
 7 )
 8 row format delimited
 9 fields terminated by ‘,‘
10 lines terminated by ‘\n‘
11 stored as textfile;

建表 log_orc,格式 orc

 1 # log as textfile
 2 create table if not exists log(
 3 item_id string,
 4 user_id string,
 5 action string,
 6 action_time timestamp
 7 )
 8 row format delimited
 9 fields terminated by ‘,‘
10 lines terminated by ‘\n‘
11 stored as textfile;
12
13 # log as orc
14 create table if not exists log_orc
15 like log
16 stored as orc;

2. 载入数据

 1 #product
 2 load data local inpath ‘/home/zkpk/test/tmall/tmall_product.csv‘ overwrite into table product;
 3 #验证:select * from product limit 100;
 4 #review
 5 load data local inpath ‘/home/zkpk/test/tmall/tmall_review.csv‘ overwrite into table review;
 6 #验证:select * from review limit 100;
 7 #log
 8 load data local inpath ‘/home/zkpk/test/tmall/tmall_log.csv‘ overwrite into table log;
 9 #验证:select * from log limit 100;
10 insert into table log_orc select * from log;

3. 载入数据

  • 热度前十名的商家(商品被浏览的最多)

    1 select
    2 p.seller_id,
    3 count(*) as click_count
    4 from log_orc l
    5 inner join product p on l.item_id = p.item_id
    6 where l.action=‘click‘
    7 group by p.seller_id
    8 order by click_count desc
    9 limit 10;

    输出

    +--------------+--------------+--+
    | p.seller_id | click_count |
    +--------------+--------------+--+
    | s403 | 143 |
    | s190 | 116 |
    | s284 | 86 |
    | s161 | 78 |
    | s227 | 59 |
    | s61 | 59 |
    | s29 | 57 |
    | s82 | 45 |
    | s464 | 42 |
    | s261 | 42 |
    +--------------+--------------+--+
  • 好评率(feedback=5为好评)低于60%的商品

    1 select
    2 item_id,
    3 count(case when feedback =5 then 1 else null end) as best,
    4 count(1) as total,
    5 count(case when feedback =5 then 1 else null end)/ count(1) as best_rate
    6 from review
    7 group by item_id
    8 having count(case when feedback =5 then 1 else null end) < count(1) *0.6 ;

    输出

    +----------+-------+--------+----------------------+--+
    | item_id  | best  | total  |      best_rate       |
    +----------+-------+--------+----------------------+--+
    | 221      | 0     | 1      | 0.0                  |
    | 256      | 0     | 4      | 0.0                  |
    | 287      | 1     | 3      | 0.3333333333333333   |
    | 288      | 2     | 6      | 0.3333333333333333   |
    | 378      | 0     | 1      | 0.0                  |
    | 379      | 1     | 6      | 0.16666666666666666  |
    | 397      | 0     | 2      | 0.0                  |
    | 398      | 0     | 1      | 0.0                  |
    | 423      | 2     | 7      | 0.2857142857142857   |
    | 449      | 1     | 5      | 0.2                  |
    | 45       | 0     | 6      | 0.0                  |
    | 450      | 0     | 1      | 0.0                  |
    | 451      | 0     | 3      | 0.0                  |
    | 453      | 1     | 2      | 0.5                  |
    | 505      | 1     | 2      | 0.5                  |
    +----------+-------+--------+----------------------+--+
  • 找出潜在购买用户(收藏了商品,但是没有购买)

     1 select distinct
     2 m.item_id,
     3 m.user_id
     4 from log_orc m
     5 left outer join log_orc s
     6 on (m.item_id = s.item_id
     7 and m.user_id = s.user_id
     8 and s.action=‘alipay‘)
     9 where m.action=‘collect‘
    10 and s.item_id is null;

    输出

    +------------+------------+--+
    | m.item_id  | m.user_id  |
    +------------+------------+--+
    | 152        | 3286       |
    | 24         | 3389       |
    | 242        | 39         |
    | 422        | 3423       |
    | 468        | 2727       |
    +------------+------------+--+
时间: 2024-10-11 11:49:29

Hive作业的相关文章

一例 Hive join 优化实战

由于 hive 与传统关系型数据库面对的业务场景及底层技术架构都有着很大差异,因此,传统数据库领域的一些技能放到 Hive 中可能已不再适用.关于 hive 的优化与原理.应用的文章,前面也陆陆续续的介绍了一些,但大多都偏向理论层面,本文就介绍一个实例,从实例中一步步加深对 hive 调优的认识与意识. 1.需求 需求我做了简化,很简单,两张表做个 join,求指定城市,每天的 pv,用传统的 RDBMS SQL 写出来就这样的: SELECT t.statdate, c.cname, coun

深入浅出Hive企业级架构优化、Hive Sql优化、压缩和分布式缓存(企业Hadoop应用核心产品)

一.本课程是怎么样的一门课程(全面介绍)    1.1.课程的背景       作为企业Hadoop应用的核心产品,Hive承载着FaceBook.淘宝等大佬 95%以上的离线统计,很多企业里的离线统计甚至全由Hive完成,如我所在的电商.       Hive在企业云计算平台发挥的作用和影响愈来愈大,如何优化提速已经显得至关重要.       Hive作业的规模决定着优化层级,一个Hive作业的优化和一万的Hive作业的优化截然不同.       拥有1万多个Hive作业的大电商如何进行Hiv

Hive优化策略介绍

作为企业Hadoop应用的核心产品之一,Hive承载着公司95%以上的离线统计,甚至很多企业里的离线统计全由Hive完成: Hive在企业云计算平台发挥的作用和影响越来越大,如何优化提速已经显得至关重要: Hive作业的规模决定着优化层级,一个Hive作业的优化和一万个Hive作业的优化截然不同: 后续文章将从如下三个方面进行hive的优化介绍: 1)  架构方面(高效.全局.局部)----最有效的优化,好的架构能让作业性能提高很多 a)  分表:(日志表量大而且作业访问次数多,造成耗时较长:将

在HDInsight中开始使用Hadoop与Hive来分析移动手机使用

在HDInsight中开始使用Hadoop与Hive来分析移动手机使用 为了能让你迅速上手使用HDInsight,本教程将向您介绍如何运行一个查询Hive提取的Hadoop集群,从非结构化数据的有意义的信息.然后,你将分析结果在Microsoft Excel中. 注意:如果你是新的Hadoop和大数据,你可以阅读更多有关条款的Apache Hadoop,MapReduce,HDFS和Hive.要了解HDInsight如何使Hadoop的在Azure中,看HDInsight Hadoop的介绍.

深入浅出Hive企业级架构优化视频教程

深入浅出Hive企业级架构优化.Hive Sql优化.压缩和分布式缓存(企业Hadoop应用核心产品)课程讲师:Cloudy课程分类:Hadoop适合人群:初级课时数量:10课时用到技术:Hive涉及项目:Hive企业级优化咨询qq:1840215592 一.课程环境:Cloudera Hadoop 4 (Hadoop 2.0)Hive-0.90二.所需技术基础:Hadoop基础.Hive基础.Linux基础,其他不限制(不分Java和.Net方向,皆适合).深入浅出Hive企业级架构优化视频教

建立HBase的集群和HDInsight在Hadoop中使用Hive来查询它们

在本教程中,您将学习如何创建和查询HDInsight使用HiveHadoop的HBase的表.下列步骤描述:?如何使用提供在Azure门户的HBase的集群.?如何启用和使用RDP访问HBase的外壳,并使用HBase的外壳创建HBase的示例表,添加行,然后列出表中的行.?如何创建一个Hive表映射到一个现有的HBase的表,使用HiveQL查询数据在HBase的表.?如何使用Microsoft HBase的REST客户端库.NET创建一个新的HBase的表,列出您帐户中的HBase的表,以及

Hive架构层面优化之六分布式缓存

案例: Hadoop jar引用:hadoop jar -libjars aa.jar bb.jar …. jar包会被上传到hdfs,然后分发到每个datanode 假设有20个jar文件,每天jar文件被上传上万次,分发达上万次(百G级),造成很严重的IO开销. 如何使这些jar包在HDFS上进行缓存,同一个jar只需上传和分发一次,后续所有的job可以节省此jar的上传和分发的开销,从而减少不必要的上传和分发呢? 解决方案:使用分布式缓存 MapReduce如何使用分布式缓存 Hadoop

Hive的配置详解和日常维护

Hive的配置详解和日常维护 一.Hive的参数配置详解 1>.mapred.reduce.tasks  默认为-1.指定Hive作业的reduce task个数,如果保留默认值,则Hive 自己决定应该使用多少个task. 2>.hive.mapred.mode  2.x下的默认值为strict,1.x以及之前的版本默认值为nonstrict.如果 设为strict,Hive将禁止一些危险的查询:分区表未用分区字段筛选: order by语句后未跟limit子句:join后没有on语句从而形

hive原理和调优

参考: hive参数: https://www.cnblogs.com/yinzhengjie/articles/11065409.html hive-site.xmlhive.async.log.enabled false #控制beeline跑时是否输出执行日志,默认是true hive:hive.exec.parallel.thread.number 50hive.exec.reducers.bytes.per.reducer 该参数在0.14.0之前默认为1,000,000,000(约1