【问题标题】:Create an external Hive table from an existing external table从现有外部表创建外部 Hive 表
【发布时间】:2015-06-22 07:50:52
【问题描述】:

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

【问题讨论】:

    标签: csv hadoop hive


    【解决方案1】:

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

    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;
    

    【讨论】:

      猜你喜欢
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多