——2015.07.28 一、Hive概述 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据表,并提供类似于SQL(HiveSQL)的操作功能。...Hive的基本操作与传统的数据库的操作类似,所不同的是Hive的SQL语句会转换成MapReduce程序执行,对于特定的查询等操作,具有更高的性能。...这部分的笔记是假设已经搭建好Hive以及Hadoop集群,主要精力放在对Hive以及Hadoop的基本操作上。 二、Hive表的基本操作之DDL 1、启动Hive Hive ?...当出现hive>就表示已经进入Hive环境,此时可以进行Hive的基本操作。 2、建立Hive表 格式: ?...3、查看Hive表的信息 describe ? 4、查看分区信息 show partitions table_name 5、删除表 drop table table_name ?
创建外部表 create external table if not exists stocks_external( ymd date, price_open float, price_high float...删除表 -- 删除外部表 drop table stocks_external; -- 查看 hdfs 上的数据,删除外部表是只删除表的元数据,不删除表的实际数据,这点和 hdfs dfs -ls /user.../bigdata 最后归纳一下Hive中表与外部表的区别: 1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!...而表则不一样; 2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的! 那么,应该如何选择使用哪种表呢?...但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!
Hive 表操作 1.1....Hive表创建语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment...EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION), Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径...在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指 定自定义的 SerDe,Hive通过 SerDe 确定表的具体的列的数据。 ....CLUSTERED BY 对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive也 是 针对某一列进行桶的组织。
外部表Hive提供了一种外部表的功能,外部表只需要与数据存储位置上的现有数据建立关联,无需将数据移动至Hive存储库中进行存储,即可使用外部数据源。...创建外部表只需在创建表时使用 `EXTERNAL` 关键字指定表的类型。在以下样例中:我们在'LOCATION'参数指定了外部数据的存储位置。Hive 将使用该位置中的数据来填充外部表。...Hive强大且完善的类SQL能力,我们可以在Hive中通过创建elasticsearch外部表的方式来实现对elasticsearch集群数据的查询。...创建方式如下:CREATE EXTERNAL TABLE IF NOT EXISTS ods.hive_elastic_table_test ( user_id string,country string...弹性扩展:通过Hive创建elasticsearch外部表,可以将elasticsearch 的数据与其他数据源进行联合查询。
hive> create table t_emp ( > id int, > name string, > age int, > dept_name string...DELIMITED > FIELDS TERMINATED BY ','; FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask...Type '\c' to clear the current input st mysql> alter database hive character set latin1; Query OK, 1...row affected (0.01 sec) 效果: hive> create table t_emp ( > id int, > name string,
描述: Hive表pms.cross_sale_path建立以日期作为分区,将hdfs目录/user/pms/workspace/ouyangyewei/testUsertrack/job1Output.../crossSale上的数据,写入该表的$yesterday分区上 表结构: hive -e " set mapred.job.queue.name=pms; drop table if exists...\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE;" 写法: yesterday=`date -d -1days +%Y-%m-%d` hive
1、开启分区 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict; 否则会出抛出异常...2、创建分区表 创建静态分区表: create table test_part_table( word string, num bigint )partitioned by(dt string) row...,在load数据的过程中,hive会自动创建分区目录。...创建动态分区表: create table orders_part( order_id string, user_id string, eval_set string, order_number string...而使用load data形式往hive表中装载数据时,则不会检查。如果字段多了则会丢弃,少了则会null值填充。同样如果字段类型不一致,也是使用null值填充。
先来说下Hive中内部表与外部表的区别: Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。...下面来看下 Hive 如何创建内部表: create table test(userid string); LOAD DATA INPATH '/tmp/result/20121213' INTO...test add partition (ptDate='20121214') location '/tmp/result/20121214'; -- 注意目录20121214最后不要画蛇添足加 /*,我就是linux...name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LOCATION ‘/sunwg/test08′; 上面的语句创建了一张名字为...在当前用户hive的根目录下找不到sunwg_test09文件夹。 此时hive将该表的数据文件信息保存到metadata数据库中。
rcfile格式表需要从原始的textfile 文件格式表导出数据并导入到新建好的rcfile格式表里 转: HIVE RCFile高效存储结构 创建rcfile 格式的表: CREATE TABLE...ip string, file_size string, down_sudo string) STORED AS RCFILE ; 因rcfile 和SequenceFile 格式的表的数据必须要从...textfile 文件格式表通过 insert 操作才能完成。...故先要创建textfile 的表。...down_sudo string) ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t" STORED AS textfile LOCATION '/user/hive
创建数据表时我们经验会添加一些中文注释到表里面方便识别,最近在测试Hive的时候,发现添在Hive创建表时添加COMMENT时的中文注释就会出现乱码,如下: 解压思路:...登陆Mysql数据库切换到Hive库: use hive 修改以下两张表即可; alter table COLUMNS_V2 modify column COMMENT varchar(256) character...查看表结构时就正常显示中文了; 如果你的表创建了分区的话就要再加一条语句: alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(...hive版本来修改:【修改一个文件即可】 进入目录: cd hive/scripts/metastore/upgrade/mysql 因为我使用的hive是2.0.0版本,所以就修改这个文件:hive-schema... NULL, 修改成: `PKEY_COMMENT` varchar(4000) CHARACTER SET utf8 DEFAULT NULL, 最后修改完后就执行上面的初始化元数据,再创建表时就可以看到正常显示中文了
二、Hive基本操作 2.1、创建数据库与创建数据库表 创建数据库操作 创建数据库 create database if not exists myhive; use myhive; ?...说明:hive的表存放位置模式是由hive-site.xml当中的一个属性指定的 hive.metastore.warehouse.dir /user/hive/...2、EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径; 若创建外部表,仅记录数据所在的路径...需求,创建hive对应的表,并将数据加载到表中,进行数据统计分析,且删除表之后,数据不能删除 需求实现: 数据准备: hdfs dfs -mkdir -p /scoredatas/month=201806...from '/export/techer'; hive表中的数据导出(了解) 将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 insert导出
关于Hive建表,参考官网: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ManagedandExternalTables...weblog表结构: CREATE TABLE IF NOT EXISTS weblog( ip string , time string , req_url string , status...hive建表.png 数据如下: 61.135.216.104 [25/Sep/2013:00:10:10 +0800] "GET /search-engine/thrift-framework-intro...image.png 也可以像下面这样建表 create table weblog_1 as select ip,time,req_url from weblog; 启动了MR任务 create table
Hive 内部表和外部表 示例 CREATE TABLE page_view( viewTime INT, userid BIGINT, page_url STRING,...BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS TEXTFILE; 这里创建了表...ROW FORMAT DELIMITED关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。...创建外部表 如果数据已经存在HDFS的/user/hadoop/warehouse/page_view上了,如果想创建表,指向这个路径,就需要创建外部表: CREATE EXTERNAL TABLE page_view...外部表关联数据 -- 这种需要先创建分区 use test; alter table fct_path_list_off_5levels partition (date="2017-09-14") set
外部表(external table) 有external修饰,表数据保存在HDFS上,该位置由用户指定。删除表时,只会删除表的元数据,所以外部表不是由Hive完全管理的 ---- 2....内部表(internal table/managed table) 没有external修饰,表数据保存在Hive默认的路径下,数据完全由Hive管理,删除表时元数据和表数据都会一起删除。...外部表的表数据由HDFS管理,Hive管理外部表元数据,尔内部表的表数据和元数据都由Hive管理 2....外部表的表数据存储位置由用户指定,而内部表的数据默认存储位置为/apps/hive/warehouse/数据库名.db/数据文件名 3....希望做数据备份并且不经常改变的数据,存放在外部表可以减少失误操作 2. 数据清洗转换后的中间结果,可以存放在内部表,因为Hive对内部表支持的功能比较全面,方便管理 3.
托管表(内部表)和外部表是Hive中的两种不同类型的表,在这篇文章中,我们将讨论Hive中表的类型以及它们之间的差异以及如何创建这些表以及何时将这些表用于特定的数据集。 1....内部表 托管表(Managed TABLE)也称为内部表(Internal TABLE)。这是Hive中的默认表。当我们在Hive中创建一个表,没有指定为外部表时,默认情况下我们创建的是一个内部表。...如果我们创建一个内部表,那么表将在HDFS中的特定位置创建。默认情况下,表数据将在HDFS的/usr/hive/warehouse目录中创建。...Hive每创建一个表都会在hive.metastore.warehouse.dir指向的目录下以表名创建一个文件夹,所有属于这个表的数据都存放在这个文件夹里面/user/hive/warehouse/tb_station_coordinate...Hive不管理数据和权限设置以及目录等,需要你有另一个程序或过程来做这些事情 不是基于现有表(AS SELECT)来创建的表 可以创建表并使用相同的模式并指向数据的位置
2.问题解决 ---- 在不能修改示例数据的结构情况下,这里需要使用Hive提供的Serde,在Hive1.1版本中提供了多种Serde,此处的数据通过属于CSV格式,所以这里使用默认的org.apache.hadoop.hive.serde2...tickSequence string, timeStamp string, tickdata string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2..."\\" ) STORED AS TEXTFILE LOCATION '/mdtick/hk/csv'; (可左右滑动) 将tickdata字段修改为String类型 3.问题验证 ---- 1.重新创建...Hive的表进行测试 ?
Hive建表异常:cannot recognize input near ')' 'row' 'format' in column specification 有问题的建表语句 hive> create...ParseException line 5:0 cannot recognize input near ')' 'row' 'format' in column specification 错误原因 : 在修改表时...,没有将建表语句完全修改正确 这是第一个表没问题 create table tb_emp5 ( id int, name string, likes array, -- 爱好采用数组类型...delimited fields terminated by ',' collection items terminated by '-' map keys terminated by ':'; 我在将第一个表修改成下面的出了问题...5:0 cannot recognize input near ‘)’ ‘row’ ‘format’ in column specification 最终发现了在name string,中在删减表时少删除了一个逗号
hive的存储过程:启动hive时,会初始化hive,这时会在mysql中生成大约36张表(后续随着业务的复杂会增加),然后创建表,会在mysql中存放这个表的信息(不是以表的形式存在的,而是把表的属性以数据的形式放在...delimited fields terminated by ","; 我创建了一个studetn表,在mysql中是看不到这个表的: 而是使用命令,查找上面的tbls这个表: mysql> select...,而是一开始创建表的使用要想好你到底需要什么样的表。...在创建内部表或外部表时加上location 的效果是一样的,只不过表目录的位置不同而已,加上partition用法也一样,只不过表目录下会有分区目录而已,load data local inpath直接把本地文件系统的数据上传到...那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!
4 1.hive模糊搜索表 show tables like '*name*'; 2.查看表结构信息 desc formatted table_name; desc table_name;...中执行命令add jar /home/jrjt/dwetl/PUB/UDF/udf/GetProperty.jar; 5.创建函数create temporary function get_pro as...hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。...命令移动表数据到另外一张表目录下并添加分区 dfs -cp /user/jrjt/warehouse/tmp.db/tmp_h02_click_log/dt=2014-02-18 /user/jrjt/...修改表名 ALTER TABLE o_h02_click_log_i RENAME TO o_h02_click_log_i_bk; 23.hive复制表结构 CREATE TABLE d_h02_click_log_baitiao_ag_sum
领取专属 10元无门槛券
手把手带您无忧上云