导入CSV文件到Hive

1. 上传CSV文件到hdfs

hadoop fs -put dwb_pulsar_c_inappropriate_hour.csv /user/root/data/

2. 创建textfile格式的临时表和orc格式的正式表

  • textfile临时表
CREATE TABLE `tmp.dwb_pulsar_c_inappropriate_hour`( 
  `session_id` string COMMENT '会话id',           
  `staff_id` string COMMENT 'B端用户id',          
  `user_id` string COMMENT 'C端用户id',           
  `root_org_id` string COMMENT '总组织机构id',    
  `org_id` string COMMENT '组织机构id',              
  `origin_type` string COMMENT '发起类型',        
  `refer_type` string COMMENT '创建来源类型',     
  `session_create_time` string COMMENT '会话创建时间',  
  `c_inappropriate_reason` string COMMENT 'C标记不合适原因',
  `c_inappropriate_time` string COMMENT 'C标记不合适时间')
PARTITIONED BY (                                   
  `dt` int COMMENT '日期分区',                     
  `hour` string COMMENT '小时分区')                
row format delimited fields terminated by ','
stored as textfile;
  • orc正式表
CREATE TABLE `dwb.dwb_pulsar_c_inappropriate_hour`( 
  `session_id` string COMMENT '会话id',           
  `staff_id` string COMMENT 'B端用户id',          
  `user_id` string COMMENT 'C端用户id',           
  `root_org_id` string COMMENT '总组织机构id',    
  `org_id` string COMMENT '组织机构id',           
  `jd_no` string COMMENT '职位编号',              
  `cv_no` string COMMENT '简历编号',              
  `origin_type` string COMMENT '发起类型',        
  `refer_type` string COMMENT '创建来源类型',     
  `session_create_time` string COMMENT '会话创建时间',  
  `c_inappropriate_reason` string COMMENT 'C标记不合适原因',
  `c_inappropriate_time` string COMMENT 'C标记不合适时间')
PARTITIONED BY (                                   
  `dt` int COMMENT '日期分区',                     
  `hour` string COMMENT '小时分区')                
row format delimited fields terminated by ','
stored as orc;

3. 载入hdfs到临时数据表

load data inpath '/user/root/data/dwb_pulsar_c_inappropriate_hour.csv' into table tmp.dwb_pulsar_c_inappropriate_hour partition(dt=20220316, hour=9);

 4. 临时表转到正式表

insert into table 
dwb.dwb_pulsar_c_inappropriate_hour partition(dt, hour) 
select * from tmp.dwb_pulsar_c_inappropriate_hour;

实现存储格式的转化,如果不使用间接转化,直接load data 到正式ORC表,会出现异常

Caused by: java.io.IOException: Malformed ORC file

原因:
ORC格式是列式存储的表,不能直接从本地或hdfs中的csv文件导入数据,只有当数据源表也是ORC格式存储时,才可以直接加载,否则会出现上述报错。

你可能感兴趣的:(Hive,hdfs,hive)