Hive限制

1.更新,事务,索引,不支持,是全表扫描

2.创建表的字段类型和java类型是对应的。不支持日期类型,提供转换为字符串类型的函数。

3.查询语句中,不支持having,可写嵌套的select来解决;group
by后只能是表的定义列名,不能像mysql那样可以为查询语句为逻辑处理结果声明的别名,但可为逻辑处理过程语句

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

5.hive中分托管表和外部表,不同的主要是在drop时,托管表,从hive中删除元数据和表数据;外部表,只能删除元数据;

6.hive中加载表数据时,不审查加载的数据是否符合表的声明模式,只在查询的时候,用返回null来标识是否符合表的声明模式

7.hive中通过对表进行分区(包含分桶)来提搞对某个特定日期或者某些日期段的数据查询性能。表分区实际为表目录下的目录文件。插入时需指定表分区(静态分区或者动态分区都可以),因为插入仅仅只是数据文件的移动,不会做特殊处理。

8.hive中插入不支持 insert into 表名 values的形式存在.可以 load data local input ‘本地文件路径‘
into table 表名  [partition(分区字段)]或者 insert  [overwrite] table 表名
[partition(分区字段)] select ...from 表名

9.hive中不支持truncate table 表名的形式存在(也包括 delete from 表名),可通过 hive>dfs -rmr
/user/hive/warehouse/表名来清空该表下的数据,以便保持表元数据信息不丢失;或者通过create table 表名 like
表名,也可以。

10.hive中join关联查询,只能通过from 表1 join 表2  on (等值的关联条件)
,不支持像mysql或者oracle中,可以from 表1,表2 where 表1.列 = 表2.列的形式

11.hive中不支持 in (子查询语句),比如: in (select id from 表名) .可以通过内连接或者 半连接 from 表1
left  semi join 表2 on (表1.列名 = 表2.列名),表2只能在on中出现,不能在select中引用

12.可以通过explain查看hive sql执行计划及解分成后的mapreduce作业数等信息

13.hive中子查询语句只能出现在from子句中,其他地方目前不允许

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

转载自:http://blog.csdn.net/xiaolang85/article/details/7860011

时间: 2024-08-24 14:05:40

Hive限制的相关文章

学习Hive和Impala必看经典解析

Hive和Impala作为数据查询工具,它们是怎样来查询数据的呢?与Impala和Hive进行交互,我们有哪些工具可以使用呢? 我们首先明确Hive和Impala分别提供了对应查询的接口: (1)命令行shell: 1. Impala:impala shell 2. Hive:beeline(早期hive的命令行版本是hive shell,现在基本不使用) (2)Hue Web UI: 1.Hue里面提供了 Hive查询编辑器 2.Hue里面提供了Impala查询编辑器 3.Hue里面提供了元数

Hive报错 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D

报错信息如下 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D 解决方法: 编辑 hive-site.xml 文件,添加下边的属性 <property> <name>system:java.io.tmpdir<

Spark 整合hive 实现数据的读取输出

实验环境: linux centOS 6.7 vmware虚拟机 spark-1.5.1-bin-hadoop-2.1.0 apache-hive-1.2.1 eclipse 或IntelJIDea 本次使用eclipse. 代码: import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.DataFrame; import o

Hive JDBC——深入浅出学Hive

第一部分:搭建Hive JDBC开发环境 搭建:Steps ?新建工程hiveTest ?导入Hive依赖的包 ?Hive  命令行启动Thrift服务 ?hive --service hiveserver & 第二部分:基本操作对象的介绍 Connection ?说明:与Hive连接的Connection对象 ?Hive 的连接 ?jdbc:hive://IP:10000/default" ?获取Connection的方法 ?DriverManager.getConnection(&q

Hadoop Hive基础sql语法

Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,通过自己的SQL 去查询分析需要的内容,这套SQL 简称Hive SQL,使不熟悉mapreduce 的用户很方便的利用SQL 语言查询,汇总,分析数据.而mapreduce开发人员可以把己写的mapper 和reducer 作为插件来支持

hive安装以及hive on spark

spark由于一些链式的操作,spark 2.1目前只支持hive1.2.1 hive 1.2安装 到http://mirror.bit.edu.cn/apache/hive/hive-1.2.1/ 网址下载hive1.2.1的部署包 2.配置系统环境变量/etc/profile export HIVE_HOME=/opt/hive-1.2.1 export PATH=$PATH:$HIVE_HOME/bin source /etc/profile 使刚刚的配置生效 3. 解压 tar -xvf

Hive UDTF开发指南

在这篇文章中,我们将深入了解用户定义表函数(UDTF),该函数的实现是通过继承org.apache.Hadoop.hive.ql.udf.generic.GenericUDTF这个抽象通用类,UDTF相对UDF更为复杂,但是通过它,我们读入一个数据域,输出多行多列,而UDF只能输出单行单列. 代码 文章中所有的代码可以在这里找到:hive examples.GitHub repository 示例数据 首先先创建一张包含示例数据的表:people,该表只有name一列,该列中包含了一个或多个名字

Hive入门到剖析(二)

5 Hive参数 hive.exec.max.created.files 说明:所有hive运行的map与reduce任务可以产生的文件的和 默认值:100000 hive.exec.dynamic.partition 说明:是否为自动分区 默认值:false hive.mapred.reduce.tasks.speculative.execution 说明:是否打开推测执行 默认值:true hive.input.format 说明:Hive默认的input format 默认值: org.a

Hive入门到剖析(一)

1 Hive简介 1.1 Hive定义 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 本质是将SQL转换为MapReduce程序. 1.2 为什么使用Hive 1.面临的问题 人员学习成本太高 项目周期要求太短 我只是需要一个简单的环境 MapReduce  如何搞定 复杂查询好难 Join如何实现 2.为什么要使用Hive 操作接口采用类SQL语法,提供快速开发的能力 避免了去写MapReduce,减少开发人员的学习成本 扩展

hive创建表失败,drop表失败

一.hive创建表失败,报错: CREATE TABLE pokes (foo INT, bar STRING);FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(