hive学习(2)--- hive sql 常用语法

hql语法参考文章:http://blog.csdn.net/acmilanvanbasten/article/details/17252673


一、单表select

1、and、sort by 、limit的使用

hive> select * from weather where city='hangzhou' and weath='fine' and minTemperat=-16 sort  by pmvalue DESC limit 5;

//查询城市是hangzhou,天气fine并且最低温度是-16° 并且pm值最大的5条记录,结果如下

2014-05-23|07:34:58     China   hangzhou        fine    -16     -10     496
2014-05-23|07:34:58     China   hangzhou        fine    -16     -6      496
2014-05-23|07:34:58     China   hangzhou        fine    -16     14      496
2014-05-23|07:34:58     China   hangzhou        fine    -16     0       496
2014-05-23|07:34:58     China   hangzhou        fine    -16     -8      496
Time taken: 29.266 seconds, Fetched: 5 row(s)


2、in 

hive> select * from weather where city='hangzhou' and weath='fine' and minTemperat in (-16,-17)  sort  by pmvalue DESC limit 10;

2014-05-23|07:34:57     China   hangzhou        fine    -17     -12     498
2014-05-23|07:34:57     China   hangzhou        fine    -17     10      498
2014-05-23|07:34:57     China   hangzhou        fine    -17     -14     498
2014-05-23|07:34:58     China   hangzhou        fine    -17     -7      496
2014-05-23|07:34:58     China   hangzhou        fine    -16     -6      496
2014-05-23|07:34:58     China   hangzhou        fine    -16     6       496
2014-05-23|07:34:58     China   hangzhou        fine    -16     -12     496
2014-05-23|07:34:58     China   hangzhou        fine    -16     1       496
2014-05-23|07:34:58     China   hangzhou        fine    -17     2       496
2014-05-23|07:34:58     China   hangzhou        fine    -17     11      496

Time taken: 29.277 seconds, Fetched: 10 row(s)


3、group by

select * from weather where city='hangzhou' and weath='fine' 
and minTemperat in (-16,-17) group by pmvalue;

4、把select的结果输出到文件中:

INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/selectResult'
select * from weather where city='hangzhou' and weath='fine' and 
minTemperat in (-16,-17) sort  by pmvalue DESC limit 100;



二、多表联合select

ps:准备工作,再创建两张表,一张是城市名称与区号的对照表,一张是pm值对应的空气状况表,表结构如下:

    create table cityinfo
    (name string, number string)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
    STORED AS TEXTFILE;


create table pminfo
    (pmvalue string, pmlevel string)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
    STORED AS TEXTFILE;

1、3表联合查询,返回所有字段,前5个结果

select *
from cityinfo join weather on (cityinfo.name=weather.city) 
join pminfo on (pminfo.pmvalue=weather.pmvalue) 
where city='hangzhou' and weath='fine' and minTemperat=-16 limit 5


Job 1: Map: 2  Reduce: 1   Cumulative CPU: 3.34 sec   HDFS Read: 229134 HDFS Write: 336 SUCCESS
Total MapReduce CPU Time Spent: 9 seconds 300 msec
OK
hangzhou        0571    2014-05-23|07:33:59     China   hangzhou        fine    -16     11      0       0       A
hangzhou        0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     -5      0       0       A
hangzhou        0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     -14     0       0       A
hangzhou        0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     12      0       0       A
hangzhou        0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     18      0       0       A
Time taken: 34.448 seconds, Fetched: 5 row(s)


2、3表联合查询,使用别名,只返回部分列

select cy.number,wh.*,pm.pmlevel
from cityinfo cy join weather wh on (cy.name=wh.city) 
join pminfo pm on (pm.pmvalue=wh.pmvalue) 
where wh.city='hangzhou' and wh.weath='fine' and wh.minTemperat=-16 limit 5


Total MapReduce CPU Time Spent: 6 seconds 790 msec
OK
0571    2014-05-23|07:33:59     China   hangzhou        fine    -16     11      0       A
0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     -5      0       A
0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     -14     0       A
0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     12      0       A
0571    2014-05-23|07:35:44     China   hangzhou        fine    -16     18      0       A


3、LEFT,RIGHT 和 FULLOUTER 、聚合等高级特性

//待续


补充知识:join时mp如何工作?

join 时,每次map/reduce 任务的逻辑:

    reducer 会缓存 join 序列中除了最后一个表的所有表的记录,再通过最后一个表将结果序列化到文件系统。这一实现有助于在 reduce 端减少内存的使用量。实践中,应该把最大的那个表写在最后(否则会因为缓存浪费大量内存)。例如:

 SELECT a.val, b.val, c.val FROM a

    JOIN b ON (a.key = b.key1)JOIN c ON (c.key = b.key1)

所有表都使用同一个 join key(使用 1 次map/reduce 任务计算)。Reduce 端会缓存 a 表和 b 表的记录,然后每次取得一个 c 表的记录就计算一次 join 结果,类似的还有:

  SELECT a.val, b.val, c.val FROMa

    JOIN b ON (a.key = b.key1)JOIN c ON (c.key = b.key2)

这里用了 2 次 map/reduce 任务。第一次缓存 a 表,用 b 表序列化[王黎17] ;第二次缓存第一次 map/reduce 任务的结果,然后用 c 表序列化。



hive hql 语法参考网址:http://blog.csdn.net/hguisu/article/details/7256833



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Apache Hive是一个开源的数据仓库基础设施,可以通过使用SQL来查询和分析大规模的数据集。apache-hive-2.1.1-bin.tar.gz是Hive的2.1.1版本的二进制安装包。这个安装包包含了Hive运行所需的所有文件。 在安装Hive之前,我们需要确保已经安装了Java Development Kit (JDK),因为Hive是在Java环境下运行的。然后,我们可以通过以下步骤来安装apache-hive-2.1.1-bin.tar.gz: 1. 首先,我们需要下载apache-hive-2.1.1-bin.tar.gz文件。我们可以从Apache Hive官方网站下载这个文件。 2. 下载完成后,我们需要将下载的文件解压缩。可以使用以下命令进行解压缩:tar -zxvf apache-hive-2.1.1-bin.tar.gz 3. 解压缩完成后,我们需要配置Hive的环境变量。我们可以打开.bashrc或.bash_profile文件,并添加以下配置行: export HIVE_HOME=/path/to/hive export PATH=$PATH:$HIVE_HOME/bin 请将上述配置行中的"/path/to/hive"替换为您解压缩Hive的路径。 4. 保存文件,然后加载这些配置。我们可以使用以下命令加载.bashrc文件:source ~/.bashrc 5. 现在,我们可以启动Hive了。使用以下命令启动:hive 这将启动Hive的命令行界面,我们可以在其中执行HiveSQL查询和操作。 这就是安装apache-hive-2.1.1-bin.tar.gz的基本步骤。安装完成后,您可以开始使用Hive来查询和分析大规模的数据集。希望这个回答能对您有帮助! ### 回答2: Apache Hive是一个基于Hadoop的数据仓库解决方案,它可以提供结构化查询语言(SQL),以便从大规模分布式数据集中检索和分析数据。hive-2.1.1-bin.tar.gz是Hive的一个版本,其中的bin表示该文件包含了Hive的可执行脚本和二进制文件。 在解压和安装这个tar.gz文件之后,我们可以通过运行Hive的命令行界面来开始使用HiveHive提供了类似于SQL的查询语言,称为HiveQL,它允许用户使用SQL语句来查询和分析存储在Hadoop集群上的数据。 Hive可以处理各种类型的数据,包括结构化数据、半结构化数据和非结构化数据。它允许用户定义表结构,将数据导入表中,并执行类SQL查询来处理这些表。Hive使用Hadoop的MapReduce框架来执行查询,因此具有良好的可扩展性和容错性。 除了基本的查询功能外,Hive还支持用户自定义函数(UDFs),以便根据特定需求编写自定义的函数,并将其应用于查询中。此外,Hive还支持分区和分桶的概念,以改进查询性能。 通过使用Hive,用户可以利用Hadoop集群的强大计算能力和存储能力来处理大规模数据集。它提供了一种简化和抽象化的方式来处理和查询大数据,对于那些熟悉SQL语法的用户来说,学习和使用Hive相对容易。 总之,apache-hive-2.1.1-bin.tar.gz是Apache Hive的一个版本,它提供了一个基于Hadoop的数据仓库解决方案,可以通过HiveQL语言来查询和分析大规模分布式数据集。 ### 回答3: apache-hive-2.1.1-bin.tar.gz 是Apache Hive项目的二进制压缩文件。Apache Hive是一个基于Hadoop的数据仓库基础架构工具,用于提供数据的存储、查询和分析。通过Hive,用户可以使用类SQL语言在Hadoop集群中执行数据查询,并将查询结果转换为MapReduce任务进行处理。 Apache Hive提供了一个类似于关系型数据库的查询语言,称为HiveQL,它使用了SQL语法来查询和操作存储在Hadoop HDFS或Hive表中的数据。HiveHiveQL查询转换为MapReduce任务或Tez DAG(有向无环图)任务,让用户可以轻松地利用Hadoop集群的并行处理能力进行大规模数据处理。 通过Apache Hive,用户可以在不需要掌握复杂的MapReduce编程技术的情况下,利用简单的SQL语法进行数据分析和挖掘。用户可以创建Hive表,将数据加载到表中,并使用HiveQL进行查询和处理。此外,Hive还提供了用户定义函数(UDF)、用户定义聚合函数(UDAF)和用户定义转换函数(UDTF)的能力,让用户可以按照自己的需求扩展和定制Hive的功能。 apache-hive-2.1.1-bin.tar.gz是Hive 2.1.1版本的二进制分发文件。用户可以下载并解压此文件,即可在本地环境中部署和运行Apache HiveHive还有其他版本和分发文件可供选择,用户可以根据自己的需求选择适合的版本进行使用。对于想要在Hadoop集群中快速搭建和使用数据仓库工具的用户,Apache Hive提供了一个强大而灵活的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值