一、一些说明
1.支持的操作
hive 默认不支持updata 和 delete操作 insert也是执行缓慢,主要用于数据的计算
hive 数据类型---字符串,大部分与java一致。 2.内外表的区别
内部表:完全交给hive管理,数据会存储在hive所在路径,删除时删掉源文件。
外部表:增加hive管理的表,创表时记录数据所在路径,不移动数据,删除时不删除源文件,只删除路径链接。
二、简单的命令
show databases;                                                              显示数据库
create database dbName;     创建数据库
drop database [IF EXISTS] dbName [cascade]         有则强制删除
use {databaseName};    使用某一数据库 desc tabName  查看表结构
show tables; 查看当前库下的表
show tables [like '*'] [in dbName]      查看某库某些表
create table tabName{columnName columnType,...}         建(内部)表(需指定分隔符)
create external table tabName {同上}    建(外部)表
location 'hdfs.path'; 指定外部表源数据路径
row format delimited fields terminated by '*';         直接写在创表语句末尾。
lines terminated by '\n';                              航分隔符默认"\n",暂时也只支持这一个
map keys terminated by
alter table tabName RENAME TO newName;        重命名表名
alter table tabName ADD COLUMNS (N T);        向已有表中添加列
insert into tabName(columnName)values(data);            向表中添加数据
drop table tbname; 删除表结构及数据 HIVE的数据导入的两种范式:
从linux上导入
load data local inpath 'linux根目录下写' into table dbName.tabName;
从HDFS的某一目录导入
load data inpath 'hdfs根目录下开始写' into table dbName.tabName;
--------------------------------- --->此方式上传会删除源文件,相当于将数据剪切 hadoop job -kill {job_id} 结束失败job的命令

三、HIVE的JDBC

  

      //1.加载驱动
Class.forName("org.apache.hive.jdbc.HiveDriver");
//2.打开连接
Connection conn = DriverManager.getConnection("jdbc:hive2://sz01:10010/test");
//mysql连接仅此处不同,三个参数
//jdbc--->(url = jdbc:mysql://IP:3306/dbName, u,p)
//3.获得操作会话对象
Statement statement = conn.createStatement();
//4.操作hive
String sql = "select * from test1 ";
//5.接受结果
ResultSet rSet = statement.executeQuery(sql);
while (rSet.next()) {
System.out.println(rSet.getInt(1)+"\t"+rSet.getString(2));
}
//6.关闭连接
rSet.close();
statement.close();
conn.close();

四、常用的建表语句 

  1. 直接建表法:  create table table_name(col_name data_type);
  2. 查询建表法:       create table table-name as (查询sql)------------------------->有数据,会执行MR过程
  3. like建表:       create table t2 like t1;------------------------------------------------>无数据,不执行MR过程

  创建时一般需指定表的结构等信息  

 row format delimited
fields terminated by ','              列分隔符,行分隔符默认为"\n",一般不配置
collection items terminated by '-'        
map keys terminated by ':'
location '/user/t2'                 数据文件的位置(linux系统上的)----外部表
stored as textfile;                数据格式默认为文本类型
存储格式 存储方式 特点
TextFile 行存储 存储空间消耗比较大,并且压缩的text 无法分割和合并 查询的效率最低,可以直接存储,加载数据的速度最高
SequenceFile 行存储 存储空间消耗最大,压缩的文件可以分割和合并 查询效率高,需要通过text文件转化来加载                      
RCFile 数据按行分块 每块按照列存储
存储空间最小,
查询的效率最高 ,
需要通过text文件转化来加载,
加载的速度最低。
压缩快 快速列存取。
读记录尽量涉及到的block最少 
读取需要的列只需要读取每个row group 的头部定义。 
读取全量数据的操作 性能可能比sequencefile没有明显的优势
ORCFile 数据按行分块 每块按照列存储 压缩快,快速列存取 ,效率比rcfile高,是rcfile的改良版本
Parquet 列存储 相对于PRC,Parquet压缩比较低,查询效率较低,不支持update、insert和ACID.但是Parquet支持Impala查询引擎
五、保存hive表查询结果的方法
  1.保存到hdfs 在hdfs上运行
    hive -e "sql" >> /output/out.txt 一定要双引号
    hive -f hive.sql > /output/out.txt  
 
  2.保存到hdfs上 hive中执行
    insert overwrite dirctory /output/a.txt sql
    不支持 insert into 导出
  3.保存到linux上
    insert overwrite local directory /tmp/a.txt sql   4.保存到hive表上    
    insert into table tName SQL                追加导入
    insert overwrite table tName SQL          覆盖导入
    
  5.创表保存数据
    create table tName as sql
  

hive的简单使用的更多相关文章

  1. Hive 的简单使用及调优参考文档

    Hive 的简单使用及调优参考文档   HIVE的使用 命令行界面 使用一下命令查看hive的命令行页面, hive --help --service cli 简化命令为hive –h 会输出下面的这 ...

  2. [转]Hive:简单查询不启用Mapreduce job而启用Fetch task

    转自:http://www.iteblog.com/archives/831 如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job来完成这个任务,如下: hive> SEL ...

  3. hive中简单介绍分区表

    所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...

  4. [Hive_add_3] Hive 进行简单数据处理

    0. 说明 通过 Hive 对 duowan 数据进行简单处理 1. 操作流程 1.1 建表 create table duowan(id int, name string, pass string, ...

  5. hive 中简单的udf函数编写

    .注册函数,使用using jar方式在hdfs上引用udf库. $hive.注销函数,只需要删除mysql的hive数据记录即可. delete from func_ru ; delete from ...

  6. hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)

    一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...

  7. Hive之简单查询不启用MapReduce

    假设你想查询某个表的某一列.Hive默认是会启用MapReduce Job来完毕这个任务,例如以下: 01 hive> SELECT id, money FROM m limit 10; 02 ...

  8. hadoop生态系统学习之路(六)hive的简单使用

    一.hive的基本概念与原理 Hive是基于Hadoop之上的数据仓库,能够存储.查询和分析存储在 Hadoop 中的大规模数据. Hive 定义了简单的类 SQL 查询语言,称为 HQL.它同意熟悉 ...

  9. hive的简单理解--笔记

    Hive的理解 数据仓库的工具  Hive仅仅是在hadoop上面包装了SQL: Hive的数据存储在hadoop上 Hive的计算由MR进行 Hive批量处理数据  Hive的特点 1 可扩展性(h ...

随机推荐

  1. [LuoguP2403][SDOI2010]所驼门王的宝藏

    题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...

  2. JUnit提供测试框架的优势(JUnit Provides Advantages as a Test Framework)

    测试Java类的内部功能就是刚才你做的那些工作了.真正的测试和刚才的简单例子的主要区别是代码库的大小和复杂度.在处理一大堆代码时,你会需要收集情况报告.但上面的例子遇到第一个错误就停止了,它没有收集尽 ...

  3. Web—13-判断网站请求来自手机还是pc浏览器

    判断网站请求来自手机还是pc浏览器 #判断网站来自mobile还是pc def checkMobile(request): """ demo : @app.route(' ...

  4. 怎么在苹果Mac虚拟机上安装Win7

    怎么在苹果Mac虚拟机上安装Win7 使用 Mac 系统的用户,因为一些软件或是应用的原因,可能需要 Windows 系统才能完成.那如果不想在自己的 Mac 电脑上安装双启动系统的话,我们还可以在 ...

  5. Vue 源码分析—— 目录结构

    一,Vue.js 的源码都是在src 目录下,其目录结构如下. 1.compiler 目录包含Vue.js 所有编译相关的代码.它包括把所有模板解析成ast 语法树, ast 语法树优化等功能. 2. ...

  6. 常用 超全局数组$_server

    $_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组.这个数组中的项目由 Web 服务器创建.不能保证每个服务器都 ...

  7. luogu11月月赛T3咕咕咕(组合数学)

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  8. Linux系统初学-第二课 linux基础知识

    一.用户与群组 Linux是多人多任务的操作系统,每个用户有一个主目录(或者叫家目录 /home),其他用户可以浏览,但是能否查看文件要看具体的权限设置.文件拥有者可以修改权限,选择是否允许其他用户进 ...

  9. less的在线安装

    首先打开命令行窗口windonws+r输入cmd回车 1.确认是安装了node和less,在命令行输入“node -v”回车确认node是否安装,有版本信息则安装了,输入“lessc -v”回车确认l ...

  10. vs+qt编程相关

    vs+qt编程的那些事 以下以helloqt项目为例 文件构成 Form Files 窗体文件 /*.ui 界面文件 Generated Files 界面生成文件 /ui_helloqt.h 添加带界 ...