hive中导入text文件遇到的坑

今天帮一同学导入一个excel数据,我把excel保存为txt格式,然后建表导入,失败!分隔符格式不匹配,无法导入!!!!怎么看两边都是\t,怎么不匹配呢?
做为程序员,最不怕的就是失败,因为我们有一颗勇敢的心!再来!又特么失败。。。
想了好久,看看了看我的表格式,我犯了一个好低级的错误:

hive表的存储格式设置为了orcfile!!!

众所周知:orcfile为压缩格式,可以节约大量存储空间,但orc还有个特点就是不能直接load数据!要想load数据,我们要建一个存储格式为textfile的中间表,然后再把数据抽取过去。因为这个错误太简单,网上有相关科普,因此很少有把它当错误写出来。遇到问题的朋友们可能要走些弯路,我来补个漏~~~~~~

举个栗子:

1.首先,导出excel表格为txt格式,(这个过程不再赘述,网上教程一大把)。
123,小明,666,1990-09-23 12:00:18
256,小伙,555,1989-10-06 03:57:32
142,小兰,444,1992-07-04 05:05:45
2.在hive中创建表模型:
CREATE TABLE IF NOT EXISTS STUDENTS
(
ID INT COMMENT'学生',
SNAME STRING COMMENT '姓名',
SCORE INT COMMENT '得分',
STIME STRING COMMENT '考试时间'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORCFILE;
3.创建临时表(中间表):
CREATE TABLE IF NOT EXISTS STUDENTS_TMP
(
ID INT COMMENT'学生',
SNAME STRING COMMENT '姓名',
SCORE INT COMMENT '得分',
STIME STRING COMMENT '考试时间'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

与目标表只有名称和存储格式不同,其他都相同。

4.load 数据到临时表:
load data local inpath '/export/data/1.txt' into table students_tmp;
5.将数据导入目标表:
insert overwrite table students select * from students_tmp;
6.然后查看表数据,大功造成:
hive > select * from students;
OK
123	小明	666	1990-09-23 12:00:18
256	小伙	555	1989-10-06 03:57:32
142	小兰	444	1992-07-04 05:05:45
Time taken: 0.26 seconds, Fetched: 3 row(s)

其他存储格式如 SEQUENCEFILE、PARQUET 等,也要选存储为textfile格式,然后抽入目标表。

一定要按照导出格式的分隔符建表,不然load数据必然出错或全是null;

excel导出格式:

格式        分隔符       中文名称
text		\t          制表符
csv			,			逗号
7.还要注意一点是我们从excel导出的文件格式是gb2312 (无论是txt还是csv都是这个格式,都需要转码),我们需要把它转成utf-8才能Load。所以在load之前,我们一般会采取两种办法:
1. 在文本编辑器中进行转码,带不带bom关系不大,然后上传;
2.在文件所在本地目录下执行以下命令转码:
piconv -f gb2312 -t UTF-8 1.txt  >  2.txt

注意,在本地目录下命令转码会改变文件名,因为此命令会把所文件写入到另一个文件,并清空原文件内容,如果我们不改名,文件内容会完全丢失。所以,我们Load的时候一定要选择修改后的文件名哦。
示例:
转码前数据:

hive> select * from students;
OK
112	��	35	2017/8/19 15:30
113	����	45	
114	³��	55	2017/8/21 15:30
115	����	NULL	
116	������	75	2017/8/23 15:30
117	������	85	2017/8/24 15:30
118	�˽�	NULL	2017/8/25 15:30
119	������	90	
120	СѾ	NULL	2017/8/27 15:30
121	����	80	2017/8/28 15:30
122	��߸	75	
123	��«��	70	2017/8/30 15:30
124	����	NULL	2017/8/31 15:30
125	�繤	NULL	
126	�峤	NULL	2017/9/2 15:30
127	˾��	50	2017/9/3 15:30
128	������	58	2017/9/4 15:30
129	����	66	2017/9/5 15:30
Time taken: 0.134 seconds, Fetched: 18 row(s)

去所在目录下转码,再Load

piconv -f gb2312 -t UTF-8 2.csv  >  3.csv
# 在hive中选择正确的文件Load:
hive> load data local inpath '/export/data/3.csv' into table students;

结果:

hive> select * from students;
OK
112	小宝	35	2017/8/19 15:30
113	王明	45	
114	鲁班	55	2017/8/21 15:30
115	苗苗	NULL	
116	少林寺	75	2017/8/23 15:30
117	体育界	85	2017/8/24 15:30
118	八戒	NULL	2017/8/25 15:30
119	周芷若	90	
120	小丫	NULL	2017/8/27 15:30
121	海宝	80	2017/8/28 15:30
122	哪吒	75	
123	葫芦娃	70	2017/8/30 15:30
124	丹枫	NULL	2017/8/31 15:30
125	电工	NULL	
126	村长	NULL	2017/9/2 15:30
127	司机	50	2017/9/3 15:30
128	王世间	58	2017/9/4 15:30
129	松鼠	66	2017/9/5 15:30
Time taken: 0.106 seconds, Fetched: 18 row(s)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开窗函数的意义与用法

开窗函数——排序函数 开窗函数与其他函数的区别是,它不是关联其他表查询,而是在一张表内根据我们的想法自定义的规则分组后对我们组内的数据进行检索和计算。我们自定义的规则所分的组,就如同整张表的一个个小窗口,因此我们开出一个个小窗口并对这些小…

mysql/sqlyog导入txt文件的方法

今天尝试着用sqlyog向mysql中导入数据,用了以下几种: 一、sql载入 格式: LOAD DATA LOCAL INFILE 文件路径 INTO TABLE 表名 FIELDS TERMINATED BY 字段分隔符 LINES TERMINATED BY 行分隔符;直接进去了 代码: LOAD DATA LOCA…

XSS知识总结

XSS基础 跨站脚本(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这…

2020有效的邮箱号大全_2020年公众号免费裂变涨粉的3个有效方法,让我一天涨粉6000...

文章来源我的公众号:运营小小喵(专注分享新媒体运营干货、写作技巧)虽然公众号一直被唱衰,但至今依然还有很多人坚持在做。但现在做公众号最大的问题,除了流量大幅下降,打开率越来越低,更重要的…

Error during job, obtaining debugging information...

今天在插入数据的时候出现错误:Error during job, obtaining debugging information… Ended Job job_1575898012755_0005 with errors Error during job, obtaining debugging information... Examining task ID: task_1575898012755_0005_m_000000 (and more) from job job…

java实现 XSS攻击防护

首先说一下什么是XSS攻击 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, 故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web 用户将代码植入到提供给其它用…

动态分区添加的新字段无法插入数据

我们在使用动态分区的进程中,有时候需要新增字段,新增之后,发现该字段一直为空,无论怎么插入数据,该字段值始终不变。过去的做法就是把表删了,重建带新字段的新表,问题就解决了,今天…

Java实现XSS防御

XSS概述 跨站脚本攻击(Cross Site Scripting),缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。 Servlet的方式 1、继承HttpServle…

classmethod 继承_让人眼花缭乱的类继承

Python语言的一个优势是简洁易用。是否简洁易用仅仅是Python语言本身的一个话题,但“好消息”是如果你想创造那种一大堆继承、混乱的内部关系的代码,也是可以的!今天烦人的代码来自于验证某些math-y数学分析代码。一开始,他们是发…

SQL优化之浅见

SQL优化之浅见一、查询优化二、导入大量数据时的优化三、INSERT优化四、字段注释五、说明用了段mysql/Oracle/hive等数据库,对SQL语言以Mysql为例,总结一下对sql优化方面的见解,欢迎大家补充。 一、查询优化 1.在关联查询中,关联键的数据类…

JAVA SSM框架+Redis 实现单点登录

1:什么是单点登录? 答:单点登录的英文名叫做:Single Sign On(简称SSO) 一般我们的模块都是在同一个系统下,同一个tomcat(如图,以商城为例) 后来为了维护和…

2017云栖大会门票转让_「揭秘GP」云栖大会 | Greenplum 6.0 内核优化解读和7.0展望...

9月25日,云栖大会在杭州阿里巴巴云栖小镇正式拉开序幕,三天会议期间,共吸引了200多位世界级科学家、400多家科技合作伙伴参与,科技展区面积超过3万平方米,共发布了1000多项顶尖技术。云栖大会现场在此次云栖大会上&…

从mysql到大数据(一)--开宗明义

一、大数据长什么样 长像很普通,至少看两眼后就觉得很平常。 举个栗子: 一个表格,学生信息表,里面有学号、姓名、性别、年龄、学校、学院、专业、年级、宿舍号等信息如下, 但是表在库里,我们想看&#xf…

SSO单点登录方案大全

分布式微服务系统主流常用的登录方案 前言: 单点登录其实是一个概念,主要是为了解决一次登录,多系统(本系统或外部系统)之间不需要重复登录的问题,就目前来说,主流的解决方案针对业务场景分为3个方向: 1: 同一公司,同父域下的单点登录解决方案. 如[http://map.baidu.com][[h…

em算法怎么对应原有分类_机器学习基础-EM算法

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等。本文就对EM算法的原理做一个总结。EM算法要解决的问题我们经常会…

从mysql到大数据(二)--数据库的认识

一、数据库的认识 数据库顾名思义,是存放数据的库房。 二、数据库的分类(了解) 可以分为两大类:关系型数据库和非关系型数据库。 关系型数据库: 关系型数据库,存储的格式可以直观地反映实体间的关系。…

postman插件下载、安装教程

这里只讲如何在Chrome 中安装postman插件 下载链接:https://pan.baidu.com/s/1vampHeD0UiDNbrB3G8j_hA 提取码:wqdl 方法/步骤 1.在Chrome输入地址:[chrome://extensions/] 2.将压缩包直接拖拽至Chrome中 3.运行在Chrome输入地址&#xff…

得力条码扫描器怎么用_广东智能物流控制系统怎么选

广东智能物流控制系统怎么选,东莞智库,东莞智库(SmartWarehouse),专注电子制造SMT智能仓库,致力于帮助电子制造企业提高物流仓储效率和效能。广东智能物流控制系统怎么选, 旭日东自动分拣系统是个集机械、电气、计算机…

从mysql到大数据(三)--mysql数据库建模一常用数据类型及引擎

数据库的安装请自行百度。如果你想直捣黄龙练查询,没有表没有数据是不能实现的。我们从建表开始学习。但要知道,我们所有东西都是了解,学习不要有压力,不要必须要求记什么,当然,如果你不累可以记&#xff0…

Postman用法简介-Http请求模拟工具

Postman用法简介-Http请求模拟工具 在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也…