hivehive加载本地数据模式到底mr怎么跑

hbase和hive的差别是什么,各自适用在什么场景中?
比起单机的mysql、oracle有什么优势,有没有什么劣势?
按投票排序
网络上有篇deck,题目为 NoSQL and Big Data Processing - Hbase, Hive and Pig (),从 关系型数据库开始,到 NoSQL, 到 CAP 原理,再到 HBase 和 Hive,基本描述了整个数据存储的演进路线以及原因。以下是我个人对这篇deck的整理,和deck的结构基本相同。虽然不能直接回答题主的问题,但相信读完这个deck之后,这个问题一定可以迎刃而解。1. RDBMS让数据集保持在一台单一的机器上是RDBMS提供ACID特性和丰富查询模型的最好方式。但数据集变大时,垂直扩展(scaling up)带来诸多限制。企业慢慢发现,通过增加多节点的服务器进行横向扩展(scaling out)是一种更经济和更可行的方式。DBA们对RDBMS采用的横向扩展的方法主要有主从复制(Master-slave)、分片(Sharding)。横向扩展RDBMS – Master/Slave 利用数据库的复制或镜像功能,同时在多台数据库上保存相同的数据,并且将读操作和写操作分开,写操作集中在一台主数据库上,读操作集中在多台从数据库上。复制过程的速度与系统中的从节点数量成反比。关键的读取可能不正确,因为写可能没有来得及被向下传播;大数据集可能会造成问题,因为主节点需要将数据复制到从节点;横向扩展RDBMS - Sharding通常来说,在满足ACID特性的数据库中进行扩展是非常难的。基于这个原因,对数据进行扩展,这个数据库本身就必须拥有简单的模型,将数据分割为N片,然后在单独的片中执行查询。数据分割的单元被称为“shard”。将N片数据分配个M个DBMS进行操作。DBMS并不会去管理数据片,这需由服务开发者自行完成。不同的分片方法有:
- 垂直分区(Vertical Partitioning):将不需要进行联合查询的数据表分散到不同的数据库服务器上。
- 水平分区(sharding/分表) 将同一个表的记录拆分到不同的表甚至是服务器上,这往往需要一个稳定的算法来保证读取时能正确从不同的服务器上取得数据。比如,将ZIP codes小于50000的客户存储在CustomersEast,将ZIP codes大于或等于50000的客户存储在CustomersWest。CustomersEast和CustomersWest就成为两个分区表。方法有 Range-Based Partitioning, Key or Hash-Based partitioning等。优点与不足
- 对读取和写入都有很好的扩展
- 不透明,应用需要做到可识别分区
- 不再有跨分区的关系/joins
- 跨片参照完整性损失其他RDBMS扩展方法Multi-Master replication:所有成员都响应客户端数据查询。多主复制系统负责将任意成员做出的数据更新传播给组内其他成员,并解决不同成员间并发修改可能带来的冲突。INSERT only, not UPDATES/DELETES:数据进行版本化处理。No JOINs, thereby reducing query time:Join的开销很大,而且频繁访问会使开销随着时间逐渐增加。非规范化(Denormalization)可以降低数据仓库的复杂性,以提高效率和改善性能。In-memory databases:磁盘数据库解决的是大容量存储和数据分析问题,内存数据库解决的是实时处理和高并发问题。主流常规的RDBMS更多的是磁盘密集型,而不是内存密集型。2. NoSQLNoSQL现在被理解为 Not Only SQL 的缩写,是对非关系型的数据库管理系统的统称(正因为此,人们通常理解 NoSQL 是 anti-RDBMS)。NoSQL 与 RDBMS 存在许多不同点,- 最重要的是NoSQL不使用SQL作为查询语言。- NoSQL 不需要固定的表模式(table schema),也经常会避免使用SQL的JOIN操作,一般有可水平扩展的特征。- NoSQL产品会放宽一个或多个 ACID 属性(CAP定理)CAP 理论CAP理论是数据系统设计的基本理论,目前几乎所有的数据系统的设计都遵循了这个理论。CAP理论指出,分布式系统只能满足以下三项中的两项而不可能满足全部三项,一致性(Consistency)(所有节点在同一时间具有相同的数据)可用性(Availability)(保证每个请求不管成功或者失败都有响应)分区容忍性(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作)一致性有两种类型:
- strong consistency – ACID(Atomicity Consistency Isolation Durability):对于关系型数据库,要求更新过的数据能被后续所有的访问都看到,这是强一致性。
- weak consistency – BASE(Basically Available Soft-state Eventual consistency )-- Basically Available - system seems to work all the time
(基本可用)-- Soft State - it doesn't have to be consistent all the time (不要求所有时间都一致)-- Eventually Consistent - becomes consistent at some later time (最终一致性)对于分布式数据系统(scale out),分区容忍性是基本要求,否则就失去了价值。因此只能在一致性和可用性上做取舍,如何处理这种取舍正是目前NoSQL数据库的核心焦点。几乎所有的情况都是牺牲一致性而换取高可用性。当然,牺牲一致性,只是不再要求关系数据库中的强一致性,而是只要系统能达到最终一致性即可。考虑到客户体验,这个最终一致的时间窗口,要尽可能的对用户透明,也就是需要保障“用户感知到的一致性”。通常是通过数据的多份异步复制来实现系统的高可用和数据的最终一致性的。3. HBaseHBase is an open-source, distributed, column-oriented database built on top of HDFS (or KFS) based on BigTable! 按照CAP理论,HBase属于C+P类型的系统。HBase是强一致性的(仅支持单行事务)。每一行由单个区域服务器(region server)host,行锁(row locks)和多版本并发控制(multiversion concurrency control)的组合被用来保证行的一致性。There are three types of lookups:Fast lookup using row key and optional timestamp.Range scan from region start to end.Full table scan (全表扫描)Access or manipulate
- Programmatic access via Java, REST, or Thrift APIs.
- Scripting via JRuby.HBase benefits than RDBMS
- No real indexes
- Automatic partitioning
- Scale linearly and automatically with new nodes
- Commodity hardware
- Fault tolerance
- Batch processing4. Hive
- Provide higher-level language (HQL, like SQL) to facilitate large-data processing
- Higher-level language “compiles down” to Hadoop Map/Reduce jobs5. Hive + HBaseReasons to use Hive on HBase:A lot of data sitting in HBase due to its usage in a real-time environment, but never used for analysisGive access to data in HBase usually only queried through MapReduce to people that don’t code (business analysts)When needing a more flexible storage solution, so that rows can be updated live by either a Hive job or an application and can be seen immediately to the otherReferences1. Hbase, Hive and Pig: 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
这个我先简单梳理下脉络,其它的可以参考邵兵的回答或网上搜索更加详细的资料。对于hbase当前noSql数据库的一种,最常见的应用场景就是采集的网页数据的存储,由于是key-value型数据库,可以再扩展到各种key-value应用场景,如日志信息的存储,对于内容信息不需要完全结构化出来的类CMS应用等。注意hbase针对的仍然是OLTP应用为主。对于hive主要针对的是OLAP应用,注意其底层不是hbase,而是hdfs分布式文件系统,重点是基于一个统一的查询分析层,支撑OLAP应用中的各种关联,分组,聚合类SQL语句。hive一般只用于查询分析统计,而不能是常见的CUD操作,要知道HIVE是需要从已有的数据库或日志进行同步最终入到hdfs文件系统中,当前要做到增量实时同步都相当困难。和mysql,oracle完全不是相同的应用场景。这个是结构化数据库,针对的更多的是结构化,事务一致性要求高,业务规则逻辑复杂,数据模型复杂的企业信息化类应用等。包括互联网应用中的很多业务系统也需要通过结构化数据库来实现。所以和hbase,hive不是一个层面的东西,不比较。
Hive的底层可以是HBase或者HDFS上存储的文件。Hive的作用是把HQL翻译成MapReduce程序,从而减少分析人员每次都要写冗长Java程序的工作量。单次Hive查询都需要耗费分钟级以上的时间(哪怕一个再小的表),因此无法作为web后端的数据库使用。HBase可以替代MySQL使用,至少淘宝就是这么做了。HBase是建造在HDFS基础上的分布式数据库,可以支持海量数据(比MySQL高一到两个量级)的存储和查询。还不容易丢失数据。
简单的说,HBase是OLTP,Hive是OLAP比起单机的Oracle和MySQL,好处就是伸缩性好啊劣势就是分布式带来的可用性,一致性,分区容忍性~等问题,以及分布式事务难以实现。
Hive中的表是纯逻辑表,就只是表的定义等,即表的元数据。Hive本身不存储数据,它完全依赖HDFS和MapReduce。这样就可以将结构化的数据文件映射为为一张数据库表,并提供完整的SQL查询功能,并将SQL语句最终转换为MapReduce任务进行运行。 而HBase表是物理表,适合存放非结构化的数据。2.
Hive是基于MapReduce来处理数据,而MapReduce处理数据是基于行的模式;HBase处理数据是基于列的而不是基于行的模式,适合海量数据的随机访问。3.
HBase的表是疏松的存储的,因此用户可以给行定义各种不同的列;而Hive表是稠密型,即定义多少列,每一行有存储固定列数的数据。4.
Hive使用Hadoop来分析处理数据,而Hadoop系统是批处理系统,因此不能保证处理的低迟延问题;而HBase是近实时系统,支持实时查询。5.
Hive不提供row-level的更新,它适用于大量append-only数据集(如日志)的批任务处理。而基于HBase的查询,支持和row-level的更新。6.
Hive提供完整的SQL实现,通常被用来做一些基于历史数据的挖掘、分析。而HBase不适用与有join,多级索引,表关系复杂的应用场景。
你可以简单理解为,hive是文件的视图,hbase是建了索引的key-value表。
HBase是个基于HDFS的数据库。Hive是用SQL替代写MR的编程框架,做Hadoop上会把用户提交的SQL语句做语法分析,执行计划等一堆乱七八糟的事后变成MR job提交去跑,返回结果给用户。不然每次都写MR很麻烦的,有这个写个SQL就可以拿到等效的结果,很适合运营童鞋用。当然Hive也有HBase的Connector,用这个Connnector后可以写SQL查询HBase的数据而不是HDFS,不过一般不这么搞。像用SQL on HBase的话,可以用下Phoenix,新手第一次用的感觉会觉得很像是MySQL
hbase是数据库hive是语言层,包装器
你试着用hive和hbase分别插入和删除一条记录(如果可以的话)就能清楚的知道差别了。
楼上回答的很精辟。hbase是列式存储的数据库,而hive(小蜜蜂)是一个简化操作hbase的接口,类似于sql语句去操作hbase。没有万能,只能说在哪种场合适合用列式的存储(一般是用在数据量巨大,且数据间关系简单,比如K,V对。)或者关系型的数据库(一般用在数据关系严密,数据量相对较小的情况下)
hbase是db, hive 是工具,不是一个次元的
hadoop由大数据存储hdfs和大数据计算Map/Reduce构成,
hbase可以理解为
NOSQL存储, 类似与hdfs的改进,
hive可以理解为简单化的大数据计算和分析, 类似于对Map/Reduce的封装
全部是大型数据库的管理中间件,训练课程价格不低的
完全不同应用场景吧,HBase 速度比 Hive 快了不知道多少。HBase 是非关系型数据库(KV型), 对 key 做索引,查询速度非常快(相比较 Hive ),适合实时查询;而Hive是关系型数据结构,适合做后期数据分析。和单机的MySQL,Oracle比较的话,Hive的优点是可以存储海量数据,只是查询速度比较慢。
求助:刚接触hive,我想给hive的某一个分区新增数据,这个数据是我本地数据,这样的可以新增吗?在百度上查了好久,都不是我要的答案。希望各位网友帮助,感谢
hbase是列式存储的数据库,而hive(小蜜蜂)是一个简化操作hbase的接口,类似于sql语句去操作hbase。没有万能,只能说在哪种场合适合用列式的存储(一般是用在数据量巨大,且数据间关系简单,比如K,V对。)或者关系型的数据库(一般用在数据关系严密,数据量相对较小的情况下)。
已有帐号?
社交帐号登录
无法登录?
社交帐号登录& Hive安装及使用攻略
Hive安装及使用攻略
,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在VPS虚拟主机上,通过云向用户提供存储和计算的服务。
现在硬件越来越便宜,一台非品牌服务器,2颗24核CPU,配48G内存,2T的硬盘,已经降到2万块人民币以下了。这种配置如果简单地放几个web应用,显然是奢侈的浪费。就算是用来实现单节点的hadoop,对计算资源浪费也是非常高的。对于这么高性能的计算机,如何有效利用计算资源,就成为成本控制的一项重要议题了。
通过虚拟化技术,我们可以将一台服务器,拆分成12台VPS,每台2核CPU,4G内存,40G硬盘,并且支持资源重新分配。多么伟大的技术啊!现在我们有了12个节点的hadoop集群, 让Hadoop跑在云端,让世界加速。
关于作者:
张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
blog: http://blog.fens.me
转载请注明出处:
Hive是Hadoop一个程序接口,Hive让数据分析人员快速上手,Hive使用了类SQL的语法,Hive让JAVA的世界变得简单而轻巧,Hive让Hadoop普及到了程序员以外的人。
从Hive开始,让分析师们也能玩转大数据。
Hive的安装
Hive的基本使用:CRUD
Hive交互式模式
Hive查询HiveQL
Hive分区表
1. Hive的安装
装好hadoop的环境后,我们可以把Hive装在namenode机器上(c1)。
hadoop的环境,请参考:,
下载: hive-0.9.0.tar.gz
解压到: /home/cos/toolkit/hive-0.9.0
~ cd /home/cos/toolkit/hive-0.9.0
~ cp hive-default.xml.template hive-site.xml
~ cp hive-log4j.properties.template hive-log4j.properties
修改hive-site.xml配置文件
把Hive的元数据存储到MySQL中
~ vi conf/hive-site.xml
&property&
&name&javax.jdo.option.ConnectionURL&/name&
&value&jdbc:mysql://c1:3306/hive_metadata?createDatabaseIfNotExist=true&/value&
&description&JDBC connect string for a JDBC metastore&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionDriverName&/name&
&value&com.mysql.jdbc.Driver&/value&
&description&Driver class name for a JDBC metastore&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionUserName&/name&
&value&hive&/value&
&description&username to use against metastore database&/description&
&/property&
&property&
&name&javax.jdo.option.ConnectionPassword&/name&
&value&hive&/value&
&description&password to use against metastore database&/description&
&/property&
&property&
&name&hive.metastore.warehouse.dir&/name&
&value&/user/hive/warehouse&/value&
&description&location of default database for the warehouse&/description&
&/property&
修改hive-log4j.properties
#log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
设置环境变量
~ sudo vi /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/cos/toolkit/ant184/bin:/home/cos/toolkit/jdk16/bin:/home/cos/toolkit/maven3/bin:/home/cos/toolkit/hadoop-1.0.3/bin:/home/cos/toolkit/hive-0.9.0/bin"
JAVA_HOME=/home/cos/toolkit/jdk16
ANT_HOME=/home/cos/toolkit/ant184
MAVEN_HOME=/home/cos/toolkit/maven3
HADOOP_HOME=/home/cos/toolkit/hadoop-1.0.3
HIVE_HOME=/home/cos/toolkit/hive-0.9.0
CLASSPATH=/home/cos/toolkit/jdk16/lib/dt.jar:/home/cos/toolkit/jdk16/lib/tools.jar
在hdfs上面,创建目录
$HADOOP_HOME/bin/hadoop fs -mkidr /tmp
$HADOOP_HOME/bin/hadoop fs -mkidr /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse
在MySQL中创建数据库
create database hive_
grant all on hive_metadata.* to hive@'%' identified by 'hive';
grant all on hive_metadata.* to hive@localhost identified by 'hive';
ALTER DATABASE hive_metadata CHARACTER SET latin1;
手动上传mysql的jdbc库到hive/lib
~ ls /home/cos/toolkit/hive-0.9.0/lib
mysql-connector-java-5.1.22-bin.jar
#启动metastore服务
~ bin/hive --service metastore &
Starting Hive Metastore Server
#启动hiveserver服务
~ bin/hive --service hiveserver &
Starting Hive Thrift Server
#启动hive客户端
~ bin/hive shell
Logging initialized using configuration in file:/root/hive-0.9.0/conf/hive-log4j.properties
Hive history file=/tmp/root/hive_job_log_root__.txt
hive> show tables
查询MySQL数据库中的元数据
~ mysql -uroot -p
mysql> use hive_
Database changed
+-------------------------+
| Tables_in_hive_metadata |
+-------------------------+
| BUCKETING_COLS
| COLUMNS_V2
| DATABASE_PARAMS
| INDEX_PARAMS
| PARTITIONS
| PARTITION_KEYS
| PARTITION_KEY_VALS
| PARTITION_PARAMS
| PART_COL_PRIVS
| PART_PRIVS
| SD_PARAMS
| SEQUENCE_TABLE
| SERDE_PARAMS
| SORT_COLS
| TABLE_PARAMS
| TBL_COL_PRIVS
| TBL_PRIVS
+-------------------------+
23 rows in set (0.00 sec)
Hive已经成功安装,下面是hive的使用攻略。
2. Hive的基本使用
1. 进入hive控制台
~ cd /home/cos/toolkit/hive-0.9.0
~ bin/hive shell
Logging initialized using configuration in file:/home/cos/toolkit/hive-0.9.0/conf/hive-log4j.properties
Hive history file=/tmp/cos/hive_job_log_cos__.txt
#创建数据(文本以tab分隔)
~ vi /home/cos/demo/t_hive.txt
hive& CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
Time taken: 0.489 seconds
#导入数据t_hive.txt到t_hive表
hive& LOAD DATA LOCAL INPATH '/home/cos/demo/t_hive.txt' OVERWRITE INTO TABLE t_
Copying data from file:/home/cos/demo/t_hive.txt
Copying file: file:/home/cos/demo/t_hive.txt
Loading data to table default.t_hive
Deleted hdfs://:9000/user/hive/warehouse/t_hive
Time taken: 0.397 seconds
查看表和数据
Time taken: 0.099 seconds
#正则匹配表名
hive&show tables '*t*';
Time taken: 0.065 seconds
#查看表数据
hive& select * from t_
Time taken: 0.264 seconds
#查看表结构
hive& desc t_
Time taken: 0.1 seconds
#增加一个字段
hive& ALTER TABLE t_hive ADD COLUMNS (new_col String);
Time taken: 0.186 seconds
hive& desc t_
new_col string
Time taken: 0.086 seconds
#重命令表名
~ ALTER TABLE t_hive RENAME TO t_
Time taken: 0.45 seconds
Time taken: 0.07 seconds
hive& DROP TABLE t_
Time taken: 0.767 seconds
Time taken: 0.064 seconds
3. Hive交互式模式
quit,exit:
退出交互式shell
reset: 重置配置为默认值
set &key&=&value& : 修改特定变量的值(如果变量名拼写错误,不会报错)
输出用户覆盖的hive配置变量
set -v : 输出所有Hadoop和Hive的配置变量
add FILE[S] *, add JAR[S] *, add ARCHIVE[S] * : 添加 一个或多个 file, jar, archives到分布式缓存
list FILE[S], list JAR[S], list ARCHIVE[S] : 输出已经添加到分布式缓存的资源。
list FILE[S] *, list JAR[S] *,list ARCHIVE[S] * : 检查给定的资源是否添加到分布式缓存
delete FILE[S] *,delete JAR[S] *,delete ARCHIVE[S] * : 从分布式缓存删除指定的资源
! &command& :
从Hive shell执行一个shell命令
dfs &dfs command& :
从Hive shell执行一个dfs命令
&query string& : 执行一个Hive 查询,然后输出结果到标准输出
source FILE &filepath&:
在CLI里执行一个hive脚本文件
4. 数据导入
还以刚才的t_hive为例。
#创建表结构
hive& CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
从操作本地文件系统加载数据(LOCAL)
hive& LOAD DATA LOCAL INPATH '/home/cos/demo/t_hive.txt' OVERWRITE INTO TABLE t_
Copying data from file:/home/cos/demo/t_hive.txt
Copying file: file:/home/cos/demo/t_hive.txt
Loading data to table default.t_hive
Deleted hdfs://:9000/user/hive/warehouse/t_hive
Time taken: 0.612 seconds
#在HDFS中查找刚刚导入的数据
~ hadoop fs -cat /user/hive/warehouse/t_hive/t_hive.txt
从HDFS加载数据
创建表t_hive2
hive& CREATE TABLE t_hive2 (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
#从HDFS加载数据
hive& LOAD DATA INPATH '/user/hive/warehouse/t_hive/t_hive.txt' OVERWRITE INTO TABLE t_hive2;
Loading data to table default.t_hive2
Deleted hdfs://:9000/user/hive/warehouse/t_hive2
Time taken: 0.325 seconds
hive& select * from t_hive2;
Time taken: 0.287 seconds
从其他表导入数据
hive& INSERT OVERWRITE TABLE t_hive2 SELECT * FROM t_
Total MapReduce jobs = 2
Launching Job 1 out of 2
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job__0002, Tracking URL = :50030/jobdetails.jsp?jobid=job__0002
Kill Command = /home/cos/toolkit/hadoop-1.0.3/libexec/../bin/hadoop job
-Dmapred.job.tracker=hdfs://:9001 -kill job__0002
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
10:32:41,979 Stage-1 map = 0%,
reduce = 0%
10:32:48,034 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.03 sec
10:32:49,050 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.03 sec
10:32:50,068 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.03 sec
10:32:51,082 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.03 sec
10:32:52,093 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.03 sec
10:32:53,102 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.03 sec
10:32:54,112 Stage-1 map = 100%,
reduce = 100%, Cumulative CPU 1.03 sec
MapReduce Total cumulative CPU time: 1 seconds 30 msec
Ended Job = job__0002
Ended Job = -, job is filtered out (removed at runtime).
Moving data to: hdfs://:9000/tmp/hive-cos/hive__10-32-31_323_4014154/-ext-10000
Loading data to table default.t_hive2
Deleted hdfs://:9000/user/hive/warehouse/t_hive2
Table default.t_hive2 stats: [num_partitions: 0, num_files: 1, num_rows: 0, total_size: 56, raw_data_size: 0]
7 Rows loaded to t_hive2
MapReduce Jobs Launched:
Job 0: Map: 1
Cumulative CPU: 1.03 sec
HDFS Read: 273 HDFS Write: 56 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 30 msec
Time taken: 23.227 seconds
hive& select * from t_hive2;
Time taken: 0.134 seconds
创建表并从其他表导入数据
hive& DROP TABLE t_
#创建表并从其他表导入数据
hive& CREATE TABLE t_hive AS SELECT * FROM t_hive2 ;
Total MapReduce jobs = 2
Launching Job 1 out of 2
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job__0003, Tracking URL = :50030/jobdetails.jsp?jobid=job__0003
Kill Command = /home/cos/toolkit/hadoop-1.0.3/libexec/../bin/hadoop job
-Dmapred.job.tracker=hdfs://:9001 -kill job__0003
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
10:36:48,612 Stage-1 map = 0%,
reduce = 0%
10:36:54,648 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.13 sec
10:36:55,657 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.13 sec
10:36:56,666 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.13 sec
10:36:57,673 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.13 sec
10:36:58,683 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 1.13 sec
10:36:59,691 Stage-1 map = 100%,
reduce = 100%, Cumulative CPU 1.13 sec
MapReduce Total cumulative CPU time: 1 seconds 130 msec
Ended Job = job__0003
Ended Job = -, job is filtered out (removed at runtime).
Moving data to: hdfs://:9000/tmp/hive-cos/hive__10-36-39_986_2540343/-ext-10001
Moving data to: hdfs://:9000/user/hive/warehouse/t_hive
Table default.t_hive stats: [num_partitions: 0, num_files: 1, num_rows: 0, total_size: 56, raw_data_size: 0]
7 Rows loaded to hdfs://:9000/tmp/hive-cos/hive__10-36-39_986_2540343/-ext-10000
MapReduce Jobs Launched:
Job 0: Map: 1
Cumulative CPU: 1.13 sec
HDFS Read: 272 HDFS Write: 56 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 130 msec
Time taken: 20.13 seconds
hive& select * from t_
Time taken: 0.109 seconds
仅复制表结构不导数据
hive& CREATE TABLE t_hive3 LIKE t_
hive& select * from t_hive3;
Time taken: 0.077 seconds
从MySQL数据库导入数据
我们将在介绍Sqoop时讲。
5. 数据导出
从HDFS复制到HDFS其他位置
~ hadoop fs -cp /user/hive/warehouse/t_hive /
~ hadoop fs -ls /t_hive
Found 1 items
-rw-r--r--
1 cos supergroup
10:41 /t_hive/
~ hadoop fs -cat /t_hive/
通过Hive导出到本地文件系统
hive& INSERT OVERWRITE LOCAL DIRECTORY '/tmp/t_hive' SELECT * FROM t_
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job__0005, Tracking URL = :50030/jobdetails.jsp?jobid=job__0005
Kill Command = /home/cos/toolkit/hadoop-1.0.3/libexec/../bin/hadoop job
-Dmapred.job.tracker=hdfs://:9001 -kill job__0005
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
10:46:24,774 Stage-1 map = 0%,
reduce = 0%
10:46:30,823 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 0.87 sec
10:46:31,833 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 0.87 sec
10:46:32,844 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 0.87 sec
10:46:33,856 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 0.87 sec
10:46:34,865 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 0.87 sec
10:46:35,873 Stage-1 map = 100%,
reduce = 0%, Cumulative CPU 0.87 sec
10:46:36,884 Stage-1 map = 100%,
reduce = 100%, Cumulative CPU 0.87 sec
MapReduce Total cumulative CPU time: 870 msec
Ended Job = job__0005
Copying data to local directory /tmp/t_hive
Copying data to local directory /tmp/t_hive
7 Rows loaded to /tmp/t_hive
MapReduce Jobs Launched:
Job 0: Map: 1
Cumulative CPU: 0.87 sec
HDFS Read: 271 HDFS Write: 56 SUCCESS
Total MapReduce CPU Time Spent: 870 msec
Time taken: 23.369 seconds
#查看本地操作系统
hive& ! cat /tmp/t_hive/;
hive& 1623
6. Hive查询HiveQL
注:以下代码将去掉map,reduce的日志输出部分。
普通查询:排序,列别名,嵌套子查询
hive& FROM (
SELECT b,c as c2 FROM t_hive
& SELECT t.b, t.c2
& WHERE b&2
& LIMIT 2;
连接查询:JOIN
hive& SELECT t1.a,t1.b,t2.a,t2.b
& FROM t_hive t1 JOIN t_hive2 t2 on t1.a=t2.a
& WHERE t1.c&10;
聚合查询1:count, avg
hive& SELECT count(*), avg(a) FROM t_
聚合查询2:count, distinct
hive& SELECT count(DISTINCT b) FROM t_
聚合查询3:GROUP BY, HAVING
hive& SELECT avg(a),b,sum(c) FROM t_hive GROUP BY b,c
hive& SELECT avg(a),b,sum(c) FROM t_hive GROUP BY b,c HAVING sum(c)&30
7. Hive视图
Hive视图和数据库视图的概念是一样的,我们还以t_hive为例。
hive& CREATE VIEW v_hive AS SELECT a,b FROM t_hive where c&30;
hive& select * from v_
hive& DROP VIEW IF EXISTS v_
Time taken: 0.495 seconds
8. Hive分区表
分区表是数据库的基本概念,但很多时候数据量不大,我们完全用不到分区表。Hive是一种OLAP数据仓库软件,涉及的数据量是非常大的,所以分区表在这个场景就显得非常重要!!
下面我们重新定义一个数据表结构:t_hft
~ vi /home/cos/demo/t_hft_.csv
~ vi /home/cos/demo/t_hft_.csv
创建数据表
DROP TABLE IF EXISTS t_
CREATE TABLE t_hft(
SecurityID STRING,
tradeTime STRING,
PreClosePx DOUBLE
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
创建分区数据表
根据业务:按天和股票ID进行分区设计
DROP TABLE IF EXISTS t_
CREATE TABLE t_hft(
SecurityID STRING,
tradeTime STRING,
PreClosePx DOUBLE
) PARTITIONED BY (tradeDate INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
hive& LOAD DATA LOCAL INPATH '/home/cos/demo/t_hft_.csv' OVERWRITE INTO TABLE t_hft PARTITION (tradeDate=);
Copying data from file:/home/cos/demo/t_hft_.csv
Copying file: file:/home/cos/demo/t_hft_.csv
Loading data to table default.t_hft partition (tradedate=)
hive& LOAD DATA LOCAL INPATH '/home/cos/demo/t_hft_.csv' OVERWRITE INTO TABLE t_hft PARTITION (tradeDate=);
Copying data from file:/home/cos/demo/t_hft_.csv
Copying file: file:/home/cos/demo/t_hft_.csv
Loading data to table default.t_hft partition (tradedate=)
查看分区表
hive& SHOW PARTITIONS t_
tradedate=
tradedate=
Time taken: 0.082 seconds
hive& select * from t_hft where securityid='000001';
hive& select * from t_hft where tradedate= and PreClosePx&9;
Hive基于使用完成,这些都是日常的操作。后面我会继续讲一下,HiveQL优化及Hive的运维。
转载请注明出处:
This entry was posted in ,
Pingback: ()
Pingback: ()
Pingback: ()
Designed by

我要回帖

更多关于 hive导入本地数据 的文章

 

随机推荐