分享

hive0.13自带的一种序列化/反序列化的方式 RegexSerDe View

pig2 2014-11-12 14:54:39 发表于 介绍解说 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 18960
问题导读
1.RegexSerDe是什么?
2.内部表与外部表有什么区别?

3.like是否复制数据?







EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据
1.  LIKE 允许用户复制现有的表结构,但是不复制数据

2.  hive中RegexSerDe的使用
RegexSerDe是hive自带的一种序列化/反序列化的方式,主要用来处理正则表达式。
  1. CREATETABLE test_serde(
  2.    c0string,
  3.    c1string,
  4.    c2string)
  5.    ROWFORMAT
  6.    SERDE'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
  7.    WITHSERDEPROPERTIES
  8.    ('input.regex' = '([^ ]*) ([^ ]*) ([^ ]*)',
  9.    'output.format.string'= '%1$s %2$s %3$s')
  10.    STOREDAS TEXTFILE;
复制代码


3.  表名和列名不区分大小写
4.  建立外部表指定数据存储路径
  1. Create externaltable exter_trl(
  2. Id int,
  3. Name string,
  4. Age int,
  5. Tel string
  6. Location ‘/user/data/trl/external’;
  7. )
复制代码


1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样;

2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
  那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表.。

5.按指定的分区加载数据
  1.   Loaddata inpath
  2. '/user/data/clickstat_gp_fatdt0/0' OVERWRITEINTO TABLE c02_clickstat_fatdt1
  3.   PARTITION(dt='20140820');
复制代码


6.      建表的同步指定hdfs的路径
  1. CREATE EXTERNALTABLE page_view(viewTime INT, userid BIGINT,
  2. page_url STRING,referrer_url STRING,
  3. ip STRINGCOMMENT 'IP Address of the User',
  4. country STRINGCOMMENT 'country of origination')
  5. COMMENT 'This isthe staging page view table'
  6. ROW FORMATDELIMITED FIELDS TERMINATED BY '\054'
  7. STORED ASTEXTFILE
  8. LOCATION'';
复制代码


7.      HIVE VIEW(视图减少复杂查询 )
  1. CREATE VIEW test_trlAS  
  2. SELECT * FROM t1JOIN t2  
  3. ON (t1.id=t2.id)WHERE t1.name='trl';  
复制代码



已有(2)人评论

跳转到指定楼层
EASONLIU 发表于 2014-12-17 09:51:50
路过,学习学习
回复

使用道具 举报

dfsj77118 发表于 2015-4-30 09:59:28
路过,学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条