一、一些说明
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. DPDK+Pktgen 高速发包测试

    参考博客 Pktgen概述 Pktgen,(Packet Gen-erator)是一个基于DPDK的软件框架,发包速率可达线速. 提供运行时管理,端口实时测量. 可以控制 UDP, TCP, ARP, ...

  2. CSS 学习路线(二)选择器

    选择器 规则结构: 分两个基本部分 选择器(selector)和声明块(declaration block) 组成 声明块:由一个或多个声明组成,每一个声明都是属性-值对 选择器分为:元素选择器,类选 ...

  3. 【Dubbo源码阅读系列】之 Dubbo SPI 机制

    最近抽空开始了 Dubbo 源码的阅读之旅,希望可以通过写文章的方式记录和分享自己对 Dubbo 的理解.如果在本文出现一些纰漏或者错误之处,也希望大家不吝指出. Dubbo SPI 介绍 Java ...

  4. Spring Cloud(四):服务容错保护 Hystrix【Finchley 版】

    Spring Cloud(四):服务容错保护 Hystrix[Finchley 版]  发表于 2018-04-15 |  更新于 2018-05-07 |  分布式系统中经常会出现某个基础服务不可用 ...

  5. Swift基础学习笔记 一

    之前学习过一段时间swift,由于目前开发的项目还是用的OC,一段时间不看swift又基本忘干净了,好记性不如烂笔头,还是用博客记录一下自己学的东西吧. 基本数据类型: 1.常量(let)和变量(va ...

  6. ElasticSearch优化系列二:机器设置(内存)

    预留一半内存给Lucene使用 一个常见的问题是配置堆太大.你有一个64 GB的机器,觉得JVM内存越大越好,想给Elasticsearch所有64 GB的内存. 当然,内存对于Elasticsear ...

  7. 远程查看java虚拟机内存使用情况jconsole

    jconsole 查看虚拟机使用情况 1.在远程机的tomcat的catalina.sh中加入配置: JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.host ...

  8. 大数据学习:Spark是什么,如何用Spark进行数据分析

    给大家分享一下Spark是什么?如何用Spark进行数据分析,对大数据感兴趣的小伙伴就随着小编一起来了解一下吧.     大数据在线学习 什么是Apache Spark? Apache Spark是一 ...

  9. Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群

    一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1  准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考 ...

  10. git如何到精通

    git教程   目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1.4.3.分布式 ...