Hive parquet表通过csv文件导入数据

1. background

已建好了 hive parquet 格式的表, 需要从服务器的csv导入数据至该hive表

2. step

  1. 提前上传csv至服务器 /path/temp.csv

  2. 创建 textfile 格式的中转表(这里使用内部表,方便删除) ,源表名dw_procurement.dwd_tc_comm_plant ,这里中转表加上了csv后缀

sql 复制代码
CREATE TABLE IF NOT EXISTS dw_procurement.dwd_tc_comm_plant_csv (
  `city` string, 
  `plant_address` string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
  1. 导入 csv 数据至中转表 ,在hive命令行下输入命令
sql 复制代码
load data local inpath '/path/temp.csv' into  table dw_procurement.dwd_tc_comm_plant_csv;
  1. 中转表数据转移至目标表,在hive命令行下输入命令
sql 复制代码
insert into dw_procurement.dwd_tc_comm_plant select * from dw_procurement.dwd_tc_comm_plant_csv;

复制代码
1.你基于 a.csv 创建了外部表 A。
2.然后你执行了 DROP TABLE A。
3.接着你重新创建了一个表 A,但这次是基于 b.csv,而这两个文件的列结构相同,但数据内容不同。

你想确认重新创建的表 A 是否仍然使用的 a.csv 里的数据。

情况 1:重新创建表时指定了新的 LOCATION

如果你在重新创建表 A 时指定了新文件 b.csv 的路径,

例如:

sql 复制代码
CREATE EXTERNAL TABLE A (
    id INT,
    name STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/path/to/b.csv';

那么,表 A 将会使用 b.csv 中的数据。Hive 只会读取你在创建表时指定的文件路径的数据,并不会保留之前的 a.csv 数据。

情况 2:重新创建表时未指定 LOCATION

如果你在重新创建表 A 时没有指定新的 LOCATION,而 Hive 默认的 LOCATION 是原来 a.csv 的路径(例如 /user/hive/warehouse/<table_name>/),那么 Hive 将会再次使用原来的路径,表 A 仍然会读取 a.csv 中的数据。

sql 复制代码
CREATE EXTERNAL TABLE A (
    id INT,
    name STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

在这种情况下,表 A 的数据仍然会是 a.csv 中的数据。

相关推荐
墨染丶eye5 小时前
数据仓库项目启动与管理
大数据·数据仓库·spark
一个天蝎座 白勺 程序猿7 小时前
大数据(4.5)Hive聚合函数深度解析:从基础统计到多维聚合的12个生产级技巧
大数据·hive·hadoop
浩浩kids9 小时前
Hadoop•踩过的SHIT
大数据·hadoop·分布式
weixin_3077791314 小时前
C#实现HiveQL建表语句中特殊数据类型的包裹
开发语言·数据仓库·hive·c#
一个天蝎座 白勺 程序猿1 天前
大数据(4.2)Hive核心操作实战指南:表创建、数据加载与分区/分桶设计深度解析
大数据·hive·hadoop
一个天蝎座 白勺 程序猿1 天前
大数据(4.3)Hive基础查询完全指南:从SELECT到复杂查询的10大核心技巧
数据仓库·hive·hadoop
weixin_307779131 天前
判断HiveQL语句为建表语句的识别函数
开发语言·数据仓库·hive·c#
酷爱码1 天前
hive相关面试题以及答案
hive·分布式
zhangjin12221 天前
kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入
大数据·数据仓库·mysql·etl·kettle实战·kettlel批量插入·kettle mysql
宅小海2 天前
14 配置Hadoop集群-配置历史和日志服务
linux·服务器·hadoop