文档章节

hive中使用sql语句需要注意的事项

huser_YJ
 huser_YJ
发布于 2014/09/22 16:38
字数 598
阅读 43
收藏 0


最近在熟悉hive,使用hive中的sql语句过程中出现了一些问题。


1,hive中的insert into语句


hive> select * from t_hive2;
OK
16	2	3
61	12	13
41	2	31
17	21	3
71	2	31
1	12	34
11	2	34
Time taken: 0.218 seconds
hive> insert into t_hive2 values(122,34,2);
FAILED: Parse Error: line 1:12 mismatched input 't_hive2' expecting TABLE near 'into' in insert clause

从上面可以看出,hive是不支持insert into 语句的


2,不支持Date和DateTime类型

hive> alter table t_hive2 add columns (time_show Date);
FAILED: Error in semantic analysis: DATE and DATETIME types aren't supported yet. Please use TIMESTAMP instead

3,hive的表分为外部表和内部表

Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。
在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。


4,hive中两个表链接时和以前有些不同

hive> select *     
    > from t_hive,t_hive2
    > where t_hive.a=t_hive2.b;
FAILED: Parse Error: line 2:11 mismatched input ',' expecting EOF near 't_hive'

 
5, 内置函数查看命令(show functions;desc function 函数名)


hive> desc function when;
OK
There is no documentation for function 'when'
Time taken: 0.095 seconds
hive> desc function rand;
OK
rand([seed]) - Returns a pseudorandom number between 0 and 1
Time taken: 0.078 seconds
6,hive中不支持truncate table 表名的形式存在(也包括 delete from 表名),可通过 hive>dfs -rmr /user/hive/warehouse/表名来清空该表下的数据,以便保持表元数据信息不丢失;或者通过create table 表名 like 表名,也可以。

hive> truncate table t_hive;
FAILED: Parse Error: line 1:0 cannot recognize input near 'truncate' 'table' 't_hive'

hive> delete from table t_hive;
Usage: delete [FILE|JAR|ARCHIVE] <value> [<value>]*
7,hive中不支持 in (子查询语句),比如: in (select id from 表名) .可以通过内连接或者 半连接 from 表1 left  semi join 表2 on (表1.列名 = 表2.列名),表2只能在on中出现,不能在select中引用


8,hive中在不需要全局排序的情况下,写排序语句时,最好用distribute by 表名.字段名 sort by 表名.字段名 asc | desc 的形式,尽量不用order by形式(只通过一个reduce来完成所有的排序结果)


© 著作权归作者所有

huser_YJ
粉丝 2
博文 21
码字总数 28816
作品 0
武汉
私信 提问
Hadoop Hive sql 语法详解

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功...

luanpeng825485697
2018/05/30
0
0
sqoop导入数据到Base并同步hive与impala

使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 Sqool和Hive、HBase简介 测试Sqoop 使用Sqoop从MySQL导入数据到Hive 使用Sqoop从MySQL导入数据到HBase 关于Sqoop2 综上所述 其他...

hblt-j
2018/07/20
0
0
Hive 动态partition插入数据

Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中。现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做...

zyqJustin
2016/10/19
63
0
3.sparkSQL整合Hive

  spark SQL经常需要访问Hive metastore,Spark SQL可以通过Hive metastore获取Hive表的元数据。从Spark 1.4.0开始,Spark SQL只需简单的配置,就支持各版本Hive metastore的访问。注意,涉...

intsmaze(刘洋)
2018/08/09
0
0
从SQL到HiveQL应改变的几个习惯

2009-10-30 @ taobao 引言 别名 虚拟列 IN INNER JOIN 分号字符 Insert Merge IS [NOT] NULL 引言 HiveQL非常像SQL,但二者并非等价,若不注意期间的一些差异,容易导致HiveQL的语义错误,或...

zhongl
2011/09/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Hadoop集群搭建-05安装配置YARN

Hadoop集群搭建-04安装配置HDFS Hadoop集群搭建-03编译安装hadoop Hadoop集群搭建-02安装配置Zookeeper Hadoop集群搭建-01前期准备 先保证集群5台虚拟机, nn1 nn2 s1 s2 s3 hadoop 是 是 是 ...

虚拟世界的懒猫
今天
10
0
聊聊spring cloud的ConsulServiceRegistry

序 本文主要研究一下spring cloud的ConsulServiceRegistry ServiceRegistry spring-cloud-commons-2.1.2.RELEASE-sources.jar!/org/springframework/cloud/client/serviceregistry/ServiceR......

go4it
昨天
8
0
Nextjs 学习 —— hooks

22

lemos
昨天
6
0
如何在spring mvc restful接口中定制化类型转换和格式化

1.痛点 最近小胖哥搞了个小程序,有几个spring mvc 接口传递了时间,时间用java 8 time 相关的api 来直接接收: 当使用根据ISO 8601格式化的参数向任何这些方法发送POST请求时,报出了如下异...

码农小胖哥
昨天
19
0
docker日志监控

日志处理机制 我们先来了解一下docker日志处理的机制,当启动一个容器的时候,它其实是docker daemon的一个子进程,docker daemon可以拿到你容器里面进程的标准输出,拿到标准输出后,它会通...

爱宝贝丶
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部