从现有外部表创建外部配置单元表

sc4hvdpw  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(365)

我在hdfs路径中有一组csv文件,并从这些文件中创建了一个外部配置单元表,比如表a。因为有些条目是多余的,所以我尝试基于表a创建另一个配置单元表,比如表b,它有不同的记录。我能够将表\u b创建为非外部表(hive仓库)。我想知道是否可以将表\u b创建为外部表?如果这是可能的,它是否会从表\u a复制记录并在指定路径上创建自己的表\u b存储(最好也是csv)?

bvk5enib

bvk5enib1#

我假设您希望从“未清理”表中选择不同的数据并插入到“已清理”表中。

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;

相关问题