Hive--HiveQL与SQL区别

链接

1.hive内联支持什么格式?
2.分号字符注意什么问题?
3.hive中empty是否为null?
4.hive是否支持插入现有表或则分区中?
5.hive是否支持INSERT INTO 表 values()?


1、Hive不支持等值连接 

•SQL中对两表内联可以写成:
•select * from dual a,dual b where a.key = b.key;
•Hive中应为
•select * from dual a join dual b on a.key = b.key; 
而不是传统的格式:
SELECT t1.a1 as c1, t2.b1 as c2FROM t1, t2
WHERE t1.a2 = t2.b2

2、分号字符
•分号是SQL语句结束标记,在HiveQL中也是,但是在HiveQL中,对分号的识别没有那么智慧,例如:
•select concat(key,concat(';',key)) from dual;
•但HiveQL在解析语句时提示:
        FAILED: Parse Error: line 0:-1 mismatched input '<EOF>' expecting ) in function specification
•解决的办法是,使用分号的八进制的ASCII码进行转义,那么上述语句应写成:
•select concat(key,concat('\073',key)) from dual;

3、IS [NOT] NULL
•SQL中null代表空值, 值得警惕的是, 在HiveQL中String类型的字段若是空(empty)字符串, 即长度为0, 那么对它进行IS NULL的判断结果是False.

4、Hive不支持将数据插入现有的表或分区中,
仅支持覆盖重写整个表,示例如下:

  1. INSERT OVERWRITE TABLE t1  
  2. SELECT * FROM t2;
复制代码


5、hive不支持INSERT INTO 表 Values(), UPDATE, DELETE操作
    这样的话,就不要很复杂的锁机制来读写数据。
    INSERT INTO syntax is only available starting in version 0.8。INSERT INTO就是在表或分区中追加数据。

6、hive支持嵌入mapreduce程序,来处理复杂的逻辑
如:
  1. FROM (  
  2. MAP doctext USING 'python wc_mapper.py' AS (word, cnt)  
  3. FROM docs  
  4. CLUSTER BY word  
  5. ) a  
  6. REDUCE word, cnt USING 'python wc_reduce.py';  
复制代码


--doctext: 是输入
--word, cnt: 是map程序的输出

--CLUSTER BY: 将wordhash后,又作为reduce程序的输入



并且map程序、reduce程序可以单独使用,如:
  1. FROM (  
  2. FROM session_table  
  3. SELECT sessionid, tstamp, data  
  4. DISTRIBUTE BY sessionid SORT BY tstamp  
  5. ) a  
  6. REDUCE sessionid, tstamp, data USING 'session_reducer.sh';  
复制代码


-DISTRIBUTE BY: 用于给reduce程序分配行数据

7、hive支持将转换后的数据直接写入不同的表,还能写入分区、hdfs和本地目录
这样能免除多次扫描输入表的开销。
  1. FROM t1  
  2.   
  3. INSERT OVERWRITE TABLE t2  
  4. SELECT t3.c2, count(1)  
  5. FROM t3  
  6. WHERE t3.c1 <= 20  
  7. GROUP BY t3.c2  
  8.   
  9. INSERT OVERWRITE DIRECTORY '/output_dir'  
  10. SELECT t3.c2, avg(t3.c1)  
  11. FROM t3  
  12. WHERE t3.c1 > 20 AND t3.c1 <= 30  
  13. GROUP BY t3.c2  
  14.   
  15. INSERT OVERWRITE LOCAL DIRECTORY '/home/dir'  
  16. SELECT t3.c2, sum(t3.c1)  
  17. FROM t3  
  18. WHERE t3.c1 > 30  
  19. GROUP BY t3.c2;  
复制代码


### 回答1: Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL-like语言来进行大数据处理。Hive-2.3.3是Hive的一个版本,它提供了一种新的JDBC驱动程序,这个驱动程序支持新的JDBC4.2 API,提供更完整的JDBC支持。与之前的版本不同,这个新的JDBC驱动程序提供了更好的性能和更高的可伸缩性。它还支持Kerberos身份验证和SSL加密,可以更加安全地访问Hadoop数据仓库。 使用Hive-2.3.3的JDBC驱动程序,用户可以使用Java编程语言来连接和操作Hive数据仓库。它可以帮助用户编写更加灵活、可靠的Hive应用程序,实现更高效的数据分析和处理。此外,这个驱动程序还可以作为其他应用程序的数据源,如BI应用程序和ETL工具。 对于企业级应用程序,这个JDBC驱动程序提供了更好的弹性和可伸缩性,以应对大量数据的处理需求。用户可以使用它进行数据抽取、转换和加载,从而更好地实现数据集成。 总的来说,Hive-2.3.3的JDBC驱动程序是一个非常有用的工具,它提供了更好的性能、更高的可靠性和更大的可伸缩性,使用户可以更好地处理和分析大数据。 ### 回答2: Hive是一款基于Hadoop的数据仓库系统,可以用于大规模数据存储和分析。而Hive-2.3.3版本的JDBC驱动程序则是提供给Java程序访问和操作Hive数据库的一种工具。 JDBC是Java数据库连接的缩写,是Java语言访问关系型数据库的标准接口。Hive JDBC驱动程序是基于这个接口实现的,通过JDBC接口实现了Hive数据仓库的连接与操作,使得开发者可以使用Java程序对Hive表进行查询、插入、更新、删除等操作。 Hive-2.3.3版本的JDBC驱动程序具有一些新的特性,比如支持Kerberos安全认证、支持HiveServer2协议、支持连接池等。这些新增特性使得Hive-2.3.3 JDBC驱动程序更加易用、安全可靠,并能更好地满足各种应用场景的需求。 总之,Hive-2.3.3 JDBC驱动程序是连接Java程序与Hive数据库的一条桥梁,具有重要的作用。通过这个驱动程序,用户可以在Java应用程序中访问和操作Hive数据库,便于数据分析和挖掘,是大数据应用中必不可少的工具。 ### 回答3: Hive-2.3.3 JDBC驱动程序是一个用于连接Apache Hive数据库的Java编程语言接口,它使得程序员能够在Java应用程序中访问Hive数据库。JDBC驱动程序是一种遵循Java Database Connectivity(JDBC)标准的软件组件,它提供了一个标准接口来访问关系型数据库。 Hive是一个基于Hadoop的数据仓库,它允许用户使用类SQL的语言查询和分析存储在Hadoop文件系统中的大规模数据集。Hive可以将结构化数据映射到Hadoop的分布式文件系统中,并提供了类SQL的查询语言HiveQL,允许用户使用HiveQL查询大型数据集。 使用Hive-2.3.3 JDBC驱动程序,程序员能够在Java应用程序中轻松地访问Hive数据库。它提供了一个稳定、高性能的连接对象来管理与Hive的通信,该对象对数据库的基本操作(例如查询和更新)提供支持。此外,JDBC驱动程序还提供了一组API,使得程序员可以自由地构建和执行查询语句,从而进行数据查询和分析。 总之,Hive-2.3.3 JDBC驱动程序是一个重要的工具,它使得Java程序员能够轻松地访问和查询Hive数据库。它提供了一组标准接口,使得程序员可以更轻松地进行数据分析和处理,为企业和组织提供了更快、更有效的数据处理解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值