`

hive入门知识

    博客分类:
  • hive
阅读更多
一.  Hive 简介
  Hive 是基于 hadoop 分布式文件系统的一种数据库,它的数据都是以文件文件形式存在的。
  Hive 中的每一条记录对应于文件中的一行,各个字段的值是被指定的分隔符分隔的。在读数据的时候,会将文件行以分隔符分隔字段值,并将各个值按顺序给字段;现有的 hive 的权限基于文件的,如果某个用户对表对应的文件有读的权限,那么用户就对表有读的权限。
当前 hive 运用最多的是分区,hive 会将各个分区的数据分别放在不同的文件夹下;
在用 hive 执行 SQL 语句时,是将语句处理成 mapreduce 程序运行的。
二.  数据类型
整型
int    4 字节 smallint 2 字节 Tinyint 1 字节 bigint  8 字节
浮点数 float  double
字符串 string
布尔型 boolean
不支持日期时间型
不支持二进制串
----------------------------------------------------------------
其它数据类型
ARRAY
MAP
STRUCT
  create table complex(
    col1 ARRAY<int>,
    col2 Map<string,int>,
    col3 STRUCT<a:string, b:int, c:double>
  );
select col1[0],col2['b'],col3.c from complex;
----------------------------------------------------------------
三.  支持各种内建函数
  略...
四.  DDL(数据定义)
1.  创建和删除建数据库
  create database if not exists db_test
  comment '用于测试';
  drop database if exists db_test;
2.  建表
  create external table order_joined_extend(
    addr_id bigint comment 'address id' ,
    alliance_id int ,
    allot_quantity int ,
    city_ship_type_desc string
  )
comment 'order_joined_extend'
partitioned by (create_date string,type string)
row format delimited fields terminated by '\001'
lines terminated by '\n'
stored as textfile
location '/home/zhouweiping/order_joined_extend/';
external  建立外部表。外部表的好处:a.可以直接将数据文件放到 location 指定的目录,在 hive中即可查询出数据;b.可以多个表使用一份数据,只需将 location 指向同一个目录;
partitioned  by 建立分区表。分区表是将分区列值一样的放到一个文件中,如果该分区列下还有子分区,会在该文件夹下再分小文件夹;如图:

  row format 指定表中行列分隔符。
  Stored as 文件存储的格式,此处的 textfile。
  Location 指定表中数据文件存放的 hdfs 目录。该参数默认为:
  /user/hive/warehouse/dbname.db/tablename
  -------------------------------------------------------
  也可以用create table table_name like old_table_name,但是这个只能建内表,不能建外表,就是加了external,所建的表任然是内表;而且在建表时如果原表是分区表,新建的表也只是一般的表,原表中的分区字段成了新表中的一般字段。
3.  建表的时候可以同时插入数据
     create table order_joined_extend1
     comment 'order_joined_extend'
     row format delimited fields terminated by '\001'
     lines terminated by '\n'
     stored as textfile
     location '/home/zhouweiping/order_joined_extend1/'
     as
     select * from order_joined_extend;
  但是这种方法不支持外部表和分区表,并且在建表时不能指定详细的列。
4.  删除表
drop table if exists order_joined_extend1;
删除的表可能是外部表或者内表,在删除外部表时只是删除了表结构,数据文件依然存在
5.  修改表
  增加删除分区
  alter table order_joined_extend
  add partition(create_date='2012-09-01',type='ddclick_bang')
  location '/share/comm/ddclick/2012-09-01/ddclick_bang/';
  alter table order_joined_extend
  drop if exists partition(create_date='2012-09-01',type='ddclick_bang');
  重命名
  alter table order_joined_extend rename to order_joined_extend_rename;
  替换原有的列,替换时只是在分区列之前,分区列不变
  ALTER TABLE order_joined_extend REPLACE COLUMNS
  (
   product_id string,
   product_name string,
   bd_name string
   )
  增加列,之后在分区之前的最后一列加,不能指定到某列之后
  alter table order_joined_extend
  add columns (add_col_test string)
  内部表转外部表
  alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='TRUE');
  外部表转内部表
  alter table tablePartition set TBLPROPERTIES ('EXTERNAL'='FALSE');
6.  Show/describle
  show databases;
  show tables;
  show tables '*tianzhao*';
  显示表中中含有tianzhao的表名
  show partitions table_name;
  展示表中现有的分区
  desc formatted table_name;
  可以描述出很多信息,包括字段,location,分区字段,是内表或者外表等;
  show functions;
  显示可以用的函数列表,包括可用的udf函数。
  describe function length;
  返回length函数的说明
  show table extended like order_joined_extend partition(create_date='2012-09-01',type='ddclick_bang');
显示指定分区的一些信息
五.  DML(数据操作) 
  Hive 只支持 select、insert,不支持 delete、update
1.  load 数据
  Load本地数据到hive,最好指定本地文件的绝对路径
  追加导入数据:load data local inpath '/home/zhouweiping/d.dat'  into table
  order_joined_extend1;
  覆盖导入数据:load data local inpath '/home/zhouweiping/d.dat'  overwrite into table order_joined_extend1;
  加载hdfs上的数据到hive表
  如果是外表可以直接将数据文件拷贝到location的目录
  Hadoop fs –cp from location
  内表或者外表都可以用load的方法
  load data inpath '/home/zhouweiping/d.dat'  into table order_joined_extend1;
load 数据时:
  如果数据在本地,会将本地数据复制一份到 hdfs 中表的 location;
  如果是 hdfs 是的数据,会直接移动到 location;所以如果 load 数据的数据文件跟 location 相同,会报错;
2.  Insert
插入数据到非分区表
  Insert overwrite table table1
  Select * from table2
  插入数据到分区表,需要指定分区值
  insert overwrite table order_joined_extend partition (create_date='2012-09-01',type='ddclick_bang')
select addr_id,alliance_id,allot_quantity,city_ship_type_desc, from
order_joined_extend1;
一个输入,多个输出
  from table2
  Insert overwrite table table1 Select *
  Insert overwrite table table3 Select *
动态分区
  set hive.exec.dynamic.partition=true;
  set hive.exec.dynamic.partition.mode=nostrict;
  INSERT OVERWRITE TABLE order_joined_extend PARTITION(createdate,type)
  SELECT *
  FROM order_joined_extend1 ;
  Hive将会以select的最后两列作为动态分区的值,将createdate,type相同的列插入到一个
partition中
将query的结果写入文件
  写到本地文件:
  insert overwrite local directory '/home/zhouweiping/directory.dat'
  select * from order_joined_extend limit 10;
  写到hdfs:
  insert overwrite  directory '/home/zhouweiping/directory.dat'
  select * from order_joined_extend limit 10;
3.  select
一般的 SQL 语句都支持
  SELECT [ALL | DISTINCT] select_expr, select_expr, ...
  FROM table_reference
  [WHERE where_condition]
  [GROUP BY col_list]
  [CLUSTER BY col_list
  | [DISTRIBUTE BY col_list] [SORT BY col_list]
  ]
  [LIMIT number]
  在使用聚合函数时,select 的列必须是 group by 后面的字段或者只用了聚合函数的;
4.  Join
  Hive 只支持等值连接(equality joins)、外连接(outer joins)和(left semi join)。Hive 不支持所有非等值的连接,因为非等值连接非常难转化到 map/reduce 任务;hive 也不支持 in 子查询,但是可以用 left semi join 实现 in 操作。另外,Hive 支持多于 2 个表的连接。
JOIN子句中表的顺序很重要,一般是把数据量大的表放后面。
-----------------------------------------------------------------
六 hive的UDF,UDAF用法说明
  参考:http://p-x1984.iteye.com/blog/1156392
  • 大小: 1.2 MB
分享到:
评论

相关推荐

    hive入门.pdf

    ### Hive入门知识点详解 #### 一、Hive简介 Hive是一种基于Hadoop的数据仓库工具,主要用于对存储在Hadoop文件系统(HDFS)中的大数据集进行查询和管理。它通过提供类SQL的查询语言(HQL)来简化对Hadoop上数据的...

    Hive入门基础知识.pdf

    Hive入门基础知识.pdf

    HIVE从入门到精通.pdf

    ### HIVE从入门到精通知识点概述 #### 一、Hive简介 - **背景与需求**:随着商业智能领域数据量的急剧增加,传统的数据仓库解决方案成本高昂,难以满足需求。Hadoop作为一种流行且开源的MapReduce实现,在Yahoo、...

    大数据系列-Hive入门与实战.pptx

    大数据系列-Hive入门与实战 Hive 是什么? ---------------- Hive 是一个构建在 Hadoop 之上的数据仓库平台,能够将 SQL 语句转译成 MapReduce 作业,并在 Hadoop 集群上执行。Hive 表是 HDFS 的一个文件目录,一...

    Hive入门与大数据分析实战.pptx

    《Hive入门与大数据分析实战》这本书旨在帮助读者掌握Hive的基础知识和实用技巧,以便在工作中更好地发挥数据价值,提高决策效率和精确性。 Hive基础知识 Hive是一种基于Hadoop的数据仓库工具,能够提供快速的数据...

    03_Hive.docx

    ### 数据仓库Hive入门知识点详解 #### 一、Hive简介 Hive 是 Facebook 开源的一个数据仓库工具,主要用于处理海量结构化数据的日志统计需求。它通过将结构化的数据文件映射为一张数据库表,并提供了类似 SQL 的查询...

    hive入门到精通.txt

    根据提供的文件信息“hive入门到精通”,我们可以详细探讨Hive的相关知识点,包括其基础概念、安装配置、数据操作语言(DML)与数据定义语言(DDL)等核心内容。 ### Hive基础知识 1. **Hive简介**: - Apache Hive...

    大数据 hive 实战数据

    让我们深入探讨一下这两个部分以及与Hive、大数据、Hadoop和数据仓库相关的知识点。 首先,`video`数据可能包含了关于视频的各种信息,如视频ID、视频标题、时长、分类、上传日期、播放次数、评论数量等。这些数据...

    hive入门资料

    ### Hive入门资料详解 #### 一、Hive的层次结构与基本操作 ##### 进入Hive 要开始使用Hive,首先需要登录到网关机,并通过命令`hive`来启动Hive命令行界面。 ##### 查看所有数据库 在Hive命令行中输入`show ...

    hive编程手册,从入门到精通

    总的来说,《Hive编程手册,从入门到精通》是一本全方位的Hive学习资源,涵盖了理论知识、实战技能和优化策略,无论你是初入大数据领域的新手,还是寻求提升的Hive使用者,都能从中受益匪浅。通过阅读和实践书中的...

    第1章 数据仓库基础与Apache Hive入门1

    在本章中,我们将深入探讨数据仓库的基础知识以及如何通过Apache Hive进行初步探索。数据仓库是现代企业数据管理和分析的核心,而Hive作为大数据处理的重要工具,为数据仓库提供了便捷的查询和分析能力。 首先,让...

    hive搭建及使用入门简介(内含PPT、各种表创建sql及hive搭建使用笔记)

    通过这个压缩包,你可以全面掌握Hive的基础知识,包括安装、配置、表管理和SQL操作。实践是学习最好的老师,建议你在理论学习后,实际操作一下,这样能更好地理解和应用所学知识。在大数据的世界里,Hive是你探索...

    Hive初识入门参考的笔记

    ### Hive初识入门知识点 #### 一、Hive概述与学习方法 - **概念与原理**:Hive 是一个建立在 Hadoop 之上的数据仓库工具,它将结构化的文件映射为表,并提供了类似 SQL 的查询语言 HQL,使得用户能够通过 SQL 语法...

    hive初始入门

    ### Hive 初始入门知识点 #### 一、Hive 概述 - **Hive 的起源与定位** - **起源**:Hive 是由 Facebook 开发的一款数据仓库工具,最初是为了应对海量结构化日志数据的统计分析需求而设计的。 - **定位**:作为 ...

    Hive 口袋手册

    《Hive 口袋手册》是笔者根据自己对 Apache Hive 的知识点的理解汇总而成的小册子。这本小册子的撰写宗旨就两点 1. 常用;2. 概要。 这就注定了这本小册子并不是一本 “全面”、“详尽” 的书籍,它是一个对常用知识...

    深入浅出 Hive

    1. Hive 入门 Hive 是一种元数据驱动的数据仓库系统,其核心组成部分包括元数据存储(metastore)和查询解析器。元数据存储通常在关系型数据库(如 Derby 或 MySQL)中,用于存储关于表、分区、列等信息。Hive 的...

    大数据系列-Hive

    【大数据系列-Hive】 Hive是Apache软件基金会下的一个数据仓库工具,主要设计...总之,Hive是大数据处理中的重要工具,它简化了对大规模数据的管理和分析,通过学习Hive的深入知识,可以更高效地处理和探索海量数据。

    厦门大学林子雨版大数据基础入门培训课程 教师培训交流讲义-模块11-基于Hadoop的数据仓库Hive 共48页.ppt

    【大数据基础入门培训课程——基于Hadoop的数据仓库Hive】模块11主要涵盖了Hive的基础知识,包括其系统架构、工作原理、高可用性(HA)原理,以及相关的数据分析工具Impala,还有Hive的编程实践。以下是这些知识点的...

Global site tag (gtag.js) - Google Analytics