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

标签 csv hadoop hive

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

最佳答案

I am presuming you want to select distinct data from "uncleaned" table and insert into "cleaned" table.

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'

Read from first table and you can insert it by

insert overwrite table cleaned 

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

关于csv - 从现有外部表创建外部 Hive 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974604/

相关文章:

Powershell - 从文本列表中获取服务器名称和 IP

hadoop - 使用自定义对象作为映射器发出的键

hadoop - 了解 MapReduce 示例

mysql - HIVE UNION ALL with 子句

apache-spark - 如何在 DataFrame Spark 1.6 中加载特定的 Hive 分区?

perl - 如果 csv 文件可以在引用的字符串中用逗号引用,那么将 csv 文件转换为 tsv 文件的平台独立方法是什么?

python - 使用python3将json数据转换为csv但不起作用

node.js - 我应该使用哪个 nodejs 库来写入 HDFS?

amazon-web-services - 新 EMR 集群上出现 java.io.FileNotFoundException 错误

sql-server - 使用 SQL Server/SSIS 数据导入向导导入 Varbinary(max) 数据?