Hive数据仓库笔记(一)
Hive建表:
CREATE TABLE records (year STRING,temperature INT, quality INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';
每行三列数据通过tab分隔,数据如果是以tab分隔的可被hive直接识别。
查看表结构信息:
desc records;
加载数据:
LOAD DATA LOCAL INPATH'/home/data/sample.txt'
OVERWRITE INTO TABLE records;
将linux本地的文本数据导入到hive的数据仓库目录(/user/hive/warehouse/records)
该命令会覆盖掉数据,准确说,它会先删除目录里的老文件,添加新的文件。
原始数据:
导入到hive里的数据:
存数据的表在hive里是个文件,存在仓库里,仓库目录由hive.metastore.warehouse.dir属性控制。
执行查询:
hive> SELECT year, MAX(temperature) FROMrecords WHERE temperature <> 9999 AND quality IN (0, 1, 4, 5, 9) GROUP BYyear;
Hive 里的不等于不支持!=,其正确的表达式应该为<>。
Hive配置设置:
% hive --config /Users/tom/dev/hive-conf
指定hive在不同的目录里hive-site.xml配置文件以针对不同的集群。
% hive -hiveconffs.defaultFS=hdfs://localhost \
-hiveconf mapreduce.framework.name=yarn \
-hiveconfyarn.resourcemanager.address=localhost:8032
设置会话期间的属性。
% hadoop fs -mkdir /tmp
% hadoop fs -chmod a+w /tmp
% hadoop fs -mkdir -p /user/hive/warehouse
% hadoop fs -chmod a+w /user/hive/warehouse
给hive所有用户写权限。
hive> SET hive.enforce.bucketing=true;
可以在会话期间改变设置。之后又恢复。
Hive执行引擎:
Hive默认的执行引擎是MR,现在支持Tez和Spark。
Tez和spark可以避免中间结果输出到HDFS,甚至是存储在内存中的开销。
SET hive.execution.engine=tez; 设置执行引擎为Tez。
日志路径设置:
% hive -hiveconfhive.log.dir='/tmp/${user.name}'
日志级别,输出位置
% hive -hiveconfhive.root.logger=DEBUG,console
Hive架构:
Metastore configurations:
最常用的选择是用MySQL。
设置:配置文件
javax.jdo.option.ConnectionURL : jdbc:mysql://host/dbname?createDataba
seIfNotExist=true
javax.jdo.option.ConnectionDriverName :com.mysql.jdbc.Driver
用户名和密码也得设置。MySQL 驱动放置Hive的lib目录下。
Hive的替代物:
Cloudera Impala 交互式查询,性能比Hive有数量级地提升。
Presto from Facebook
Apache Drill
Spark SQL
Apache Phoenix 底层是HBase
Hive基本数据类型:
BOOLEAN TINYINT,SMALLINT, INT, and BIGINT FLOAT and DOUBLE
DECIMAL 可以设置精度DECIMAL(5,2) 精度值最大为38
STRING 理论上可以存储2G的数据,实际可能达不到这个值
VARCHAR :VARCHAR(100) CHAR:CHAR(100) 固定长度的字符串,如果有必要会有空格填充。
BINARY 存储可变长度的二进制数据
TIMESTAMP DATE年月日
复杂数据类型:
ARRAY, MAP, STRUCT, and UNION
STRUCT:类型组合
UNION:类型里选择一种类型
CREATE TABLE complex (
c1 ARRAY<INT>,
c2 MAP<STRING, INT>,
c3 STRUCT<a:STRING, b:INT, c:DOUBLE>,
c4 UNION<STRING, INT>
)
操作和功能:
SHOW FUNCTIONS 列出hive支持功能
hive> DESCRIBE FUNCTION length; 功能的具体描述
length(str | binary) - Returns the lengthof str or number of bytes in binary
data
外部表和内部表:
CREATE TABLE managed_table (dummy STRING);
LOAD DATA INPATH '/user/tom/data.txt' INTOtable managed_table;
移动hdfs://user/tom/data.txt 到hive的数据仓库目录下。
删除表:DROP TABLE managed_table;
外部表:
CREATE EXTERNAL TABLE external_table (dummy STRING)
LOCATION '/user/tom/external_table';
LOAD DATA INPATH'/user/tom/data.txt' INTO TABLE external_table;
外部表可以指定数据存储的路径。EXTERNAL关键字下,hive不检查在定义的时的外部位置是否存在,意味着可以先创建表在创建这些数据。
删除外部表仅删除元数据信息,数据还存在。
Hive数据仓库笔记(一)的更多相关文章
- Hive数据仓库笔记(三)
Joins: Inner joins: hive> SELECT * FROM sales; Joe 2 Hank 4 Ali 0 Eve 3 Hank 2 hive> SELECT * ...
- Hive数据仓库笔记(二)
分区和桶: 分区:可以提高查询的效率,只扫描固定范围数据,不用全部扫描 CREATE TABLE logs (ts BIGINT, lineSTRING) PARTITIONED BY (dt S ...
- hive学习笔记之一:基本数据类型
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Hive数据仓库工具安装
一.Hive介绍 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单SQL查询功能,SQL语句转换为MapReduce任务进行运行. 优点是可以通过类S ...
- 【大数据】Hive学习笔记
第1章 Hive基本概念 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表, ...
- Hive—学习笔记(一)
主要内容: 1.Hive的基本工能机制和概念 2.hive的安装和基本使用 3.HQL 4.hive的脚本化运行使用方式 5.hive的基本语法--建表语法 6.hive的基本语法--内部表和外部表. ...
- HIVE—数据仓库
1. hive是什么? Hive是基于 Hadoop 的一个数据仓库工具: 1. hive本身不提供数据存储功能,使用HDFS做数据存储: 2. hive也不分布式计算框架,h ...
- hive数据仓库建设
hive数据仓库建设 1.设计原生日志表 原生日志表用来存放上报的原始日志,数据经过清洗加工后会进入到各个日志表中. 1.1 创建数据库 #创建数据库 $hive>create database ...
- 高速查询hive数据仓库表中的总条数
Author: kwu 高速查询hive数据仓库中的条数.在查询hive表的条数,通常使用count(*).可是数据量大的时候,mr跑count(*)往往须要几分钟的时间. 1.传统方式获得总条数例如 ...
随机推荐
- JAVAEE——BOS物流项目07:WebService入门、apache CXF入门、基于CXF发布CRM服务
1 学习计划 1.WebService入门 n 什么是WebService n 调用网络上的WebService服务 n SOAP和WSDL概念 n 基于JDK1.7发布一个简单的WebService ...
- 利用vitual构造类的动态多态性
虚函数: 在程序运行过程中调用函数名相同的函数而实现不同功能的函数 利用虚函数这一特性,我们可以在公有继承的基类(父类)中定义虚函数,而在它们的派生类(子类)中通过基类指针来实现派生类中同名函数的调用 ...
- C语言_来了解一下GCC编译器编译C可执行脚本的过程
GCC简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译 ...
- Linux下yum安装MysqL数据库
1.命令安装mysql # yum install mysql mysql-server mysql-devel -y 最后提示 Complete! 表示安装成功 2.查看是否生成了mysqld服务 ...
- 用感知机(Perceptron)实现逻辑AND功能的Python3代码
之所以写这篇随笔,是因为参考文章(见文尾)中的的代码是Python2的,放到Python3上无法运行,我花了些时间debug,并记录了调试经过. 参考文章中的代码主要有两处不兼容Python3,一个是 ...
- mysql字符设置
MySQL字符集设置 mysql>CREATE DATABASE IF NOT EXISTS mydb default charset utf8 COLLATE utf8_general_ci; ...
- 关系网络理论︱细讲中介中心性(Betweeness Centrality)
关系网络在我认为都是一种很简单暴力地能挖掘人群特征关系的一种方式,特别今天去听了一场关于AI与金融领域的结合,里面提到了拓扑分析其实就是关系网络的解释.我在之前的文章( R语言︱SNA-社会关系网络- ...
- Android项目中的换肤总结
纵观现在各种Android app,其换肤需求可以归为 白天/黑夜主题切换(或者别的名字,通常2套),如同花顺/自选股/天天动听等,UI表现为一个switcher. 多种主题切换,通常为会员特权,如Q ...
- dojo省份地市级联之地市封装类(二)
dojo省份地市级联之地市封装类 City.java: /** * 地市封装类 */ package com.you.model; import java.io.Serializable; /** * ...
- 【php】DIRECTORY_SEPARATOR的作用
DIRECTORY_SEPARATOR是php的内部常量,用于显示系统分隔符的命令,不需要任何定义与包含即可直接使用. 在windows下路径分隔符是/(当然/在部分系统上也是可以正常运行的),在li ...