从现有外部表创建外部Hive表

时间:2015-06-22 07:50:53

标签: csv hadoop hive

我在HDFS路径中有一组CSV文件,我从这些文件创建了一个外部Hive表,让我们说table_A。由于某些条目是冗余的,我尝试基于table_A创建另一个Hive表,比如table_B,它具有不同的记录。我能够将table_B创建为非外部表(Hive仓库)。我想知道我是否可以将table_B创建为外部表?如果可以,它是否会复制table_A中的记录并在指定的路径上创建自己的table_B存储(最好也是CSV)?

1 个答案:

答案 0 :(得分:2)

  

我假设您要从“未清理”表中选择不同的数据   并插入“清洁”表格。

CREATE EXTERNAL TABLE `uncleaned`(
  `a` int, 
  `b` string,
  `c` string, 
  `d` string, 
  `e` bigint
  ) 
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  '/external/uncleaned'

创建另一个表,它可以是外部的或不是(无关紧要)。

CREATE EXTERNAL TABLE `cleaned`(
  `a` int, 
  `b` string,
  `c` string, 
  `d` string, 
  `e` bigint
  ) 
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  '/external/cleaned'
     

从第一张表中读取,您可以通过

插入
insert overwrite table cleaned 

select distinct a,b,c,d,e from uncleaned;