hive java导入CVS

原文:http://bbs.chinahadoop.cn/thread-5343-1-1.html

----------------------------------------------------------------------------------

本文的目的是hive读取cvs文件,忽略字段中‘\,’,最终还是以','来分割文本
cvs格式是以逗号','隔开的文件格式,文本中可能在字段里又包含了逗号转义符号‘\,’
文件格式举例:
1,2,5,(hah\,ahojg)
如果用hive自带的分隔符建表:
create table IF NOT EXISTS test_table(p_id INT,tm INT,idate INT,url STRING)
partitioned by (dt string)
row format delimited fields terminated by ','   或者为 '\,' 
STORED AS INPUTFORMAT
'com.hadoop.mapred.DeprecatedLzoTextInputFormat'  
OUTPUTFORMAT  
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
location '/hdfs/data/incoming';
结果都会被分为:1 2 5 (hah\ ahojg)
因为hive只识别一个字符的分隔符,所以需要我们编写自己的input/output format
下面这段代码是网上截取的,将多个分隔符换成hive自带的\001
想要忽略‘\,’的目的,建红色的代码修改如下即可:
//先将‘\,’换成'@' ,处理完逗号分隔符,再将'@' 换成 '\,'
String repalceString_01 = value.toString().replace("\\,", "@");
String repalceString_02 = repalceString_01.replace(",", "\001");
String strReplace = repalceString_02.replace("@", "\\,");

------------------------------------------------------------------------------------------------------
步骤:myeclipse中建立java工程,根目录下新建lib目录,添加hadoop和常用的jar包

  • 编写自定义InputFormat(MutilCharInputFormat
  • 编写自定义MutilCharRecordReader实现RecordReader接口,并重写next方法
编写自定义Input Format
01 package com.icloud.hive;

02 import java.io.IOException;

03 import org.apache.commons.logging.Log;

04 import org.apache.commons.logging.LogFactory;

05 import org.apache.hadoop.io.LongWritable;

06 import org.apache.hadoop.io.Text;

07 import org.apache.hadoop.mapred.FileSplit;

08 import org.apache.hadoop.mapred.InputSplit;

09 import org.apache.hadoop.mapred.JobConf;

10 import org.apache.hadoop.mapred.RecordReader;

11 import org.apache.hadoop.mapred.Reporter;

12 import org.apache.hadoop.mapred.TextInputFormat;

13  

14 public class MutilCharInputFormat extends TextInputFormat{

15 private static final Log log = LogFactory.getLog(MutilCharRecordReader.class);

16  

17 @Override

18 public RecordReader<LongWritable, Text> getRecordReader(

19 InputSplit genericSplit, JobConf job, Reporter reporter)

20 throws IOException {

21 reporter.setStatus(genericSplit.toString());

22 //创建MutilCharRecordReader并返回

23 return new MutilCharRecordReader((FileSplit)genericSplit,job);

24 }

25 }




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

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

相关文章

Django 博客教程(三):创建应用和编写数据库模型

创建 django 博客应用 在上一章节中我们创建了 django 博客的工程&#xff0c;并且成功地运行了它。然而这一切都是 django 为我们创建的项目初始内容&#xff0c;django 不可能为我们初始化生成我们需要的博客代码&#xff0c;这些功能性代码都得由我们自己编写。 django 鼓励…

python将16进制字符串转换为整数_Python 16进制与字符串的转换

电脑上装了Python2.7和3.3两个版本&#xff0c;平时运行程序包括在Eclipse里面调试都会使用2.7&#xff0c;但是由于某些原因在cmd命令行中输入python得到的解释器则是3.3, 一直没对此做处理&#xff0c;因为这样可以对两个版本的差异有一个测试&#xff0c;而且虚拟机里面是2.…

python多个文件打包成exe_多个py文件生成一个可运行exe文件

一、概述 目前有一个python脚本,需要在别的电脑中运行,安装python环境太麻烦,封装成exe文件,运行比较方便。 二、演示 环境说明 python版本:3.7.9 操作系统:windows 10 安装模块 pip3 installer pyinstaller 封装 新建目录test,目录结构如下: ./├── conf.py └── …

CSV文件的转义处理

原文&#xff1a;http://blog.csdn.net/maqingli20/article/details/7095132 ------------------------------------------------------------------------------------ CSV文件是一种适合程序格式化输出数据的文件格式。它使用英文逗号作为列分隔符&#xff0c;文件可以直接用…

华为读取版本exe_关于esrv_svc.exe和SurSvc.exe疑似泄露用户信息的猜测

封面图片来源&#xff1a;https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉&#xff0c;写网页文章的次数不多&#xff0c;排版没研究过&#xff0c;请原谅。下面是正题&#xff1a;由来&#xff1a;最初是借由火绒的自定义防护规则&#xff0c;…

gitlab ci mysql_php-Gitlab CI:在阶段之间保留MySQL数据

根据Gitlab问题页面&#xff1a;Share service between build stages.Gitlab-CI的设置方式如下&#xff1a;each job is run in each job is run independently of the others,including potentially running on different machines. And the servicesare run locally on each …

flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

摘要&#xff1a; 一杯茶的功夫部署完成机器学习模型&#xff01;在生产环境中部署机器学习模型是数据工程中经常被忽视的领域。网上的大多数教程/博客都侧重于构建、训练和调整机器学习模型。如果它不能用于实际的预测&#xff0c;那么它又有什么用呢&#xff1f; 接下来了解一…

Hive 导入CSV文件

SerDe 介绍 Hive 使用如下FileFormat 类读写 HDFS files: TextInputFormat/HiveIgnoreKeyTextOutputFormat: 读写普通HDFS文本文件. SequenceFileInputFormat/SequenceFileOutputFormat: 读写SequenceFile格式的HDFS文件. Hive 使用如下SerDe 类(反)序列化数据: MetadataTyp…

腾讯云mysql架构_一个数据库存储架构的独白

本文由云社区发表本文作者&#xff1a;许中清&#xff0c;腾讯云自研数据库CynosDB的分布式存储CynosStore负责人。从事数据库内核开发、数据库产品架构和规划。曾就职于华为&#xff0c;2015年加入腾讯&#xff0c;参与过TBase(PGXZ)、CynosDB等数据库产品研发。专注于关系数据…

Hive高级函数

Hive的函数太多了。用法和sql的差不多。 简单查询 select ... from...where... 使用各种函数 hive>show functions;//查看所有函数 hive>describe function explode;//查看函数的使用方法 LIMIT语句 列别名 嵌套select语句 标准函数&#xff1a; reverse() upper() ...…

groupby索引有效吗_SQL IN 一定走索引吗?

摘要IN 一定走索引吗&#xff1f;那当然了&#xff0c;不走索引还能全部扫描吗&#xff1f;好像之前有看到过什么Exist,IN走不走索引的讨论。但是好像看的太久了&#xff0c;又忘记了。哈哈&#xff0c;如果你也忘记了MySQL中IN是如何查询的&#xff0c;就来复习下吧。问题问题…

mysql函数使用场景_mysql的函数和存储过程的比较,以及在实际场景中的使用案例...

一.存储过程和函数的区别函数调用有返回值存储过程调用用call语句&#xff0c;函数调用直接饮用函数名参数IN&#xff0c;OUT&#xff0c;INOUT只适用于存储过程&#xff0c;对函数而言所有参数默认都是输入参数IN用于把数值传入到存储过程中OUT用于输出参数将数值传递给调用者…

hive性能调优

原文&#xff1a;http://www.tuicool.com/articles/rMvQvm ---------------------------------------------------------------------- limit 限制调整 -- 因为使用 limit 语句时候&#xff0c;是先执行整个查询语句&#xff0c;然后再返回部分结果的 set hive.limit.optimize…

推荐系统之 BPR 算法及 Librec的BPR算法实现【1】

【推荐系统之 BPR 算法】 1、关于BPR的论文原文&#xff1a; BPR: Bayesian Personalized Ranking from Implicit Feedback 2、参考1&#xff1a;论文快读 - BPR: Bayesian Personalized Ranking from Implicit Feedback &#xff08;该博主的网站不错&#xff0c;尤其论文快…

ios 筛选_万千网友让quot;低调使用quot;的软件!居然还支持iOS

点击蓝字关注我们昨天的耳朵神器大家感觉怎么样&#xff1f;享受了耳朵今天我们享受一下眼睛~可能很多同学对漫画是情有独钟但是&#xff0c;之前小黑一直介绍的都是安卓端的软件今天要给大家介绍的这款软件是IOS安卓都有终于可以不被IOS的同学吐槽了而且经过测试小黑真的想说一…

Linux卸载/删除多余网卡

卸载 使用命令ifconfig命令查看网卡情况 确认自己使用的是哪一块网卡&#xff0c;然后把其它的网卡都卸载掉。 运行命令ifconfig 网卡名称 down。 如&#xff1a; ifconfig eth1 down 再次运行ifconfig就会发现被卸载掉的网卡没了。现在可以ping 一下内网的IP试试看能不能pin…

CentOS7:JDK1.7.0_80安装

一、安装前检查 执行以下命令&#xff1a; rpm -qa | grep jdk 查看系统是否已经自带openjdk,如果存在 执行以下命令&#xff1a; yum -y remove files files为查出的、系统自带的openjdk相关文件&#xff0c;运行以上命令将相关文件卸载 执行命令 java -version[rootlocalhost…

python海龟绘图画圣诞帽男人_python海龟绘图实例教程

本文以实例形式介绍了python turtle模块即海龟绘图的使用方法&#xff0c;对于需要进行图形编程的朋友相信会有一定的借鉴价值。python turtle模块简介&#xff1a;python2.6版本中引入的一个简单的绘图工具&#xff0c;叫做海龟绘图(turtle graphics)1.使用海龟绘图首先我们需…

spring+mybatis 多数据源整合

原文&#xff1a;http://blog.csdn.net/fhx007/article/details/12530735 ---------------------------------------------------------------------------------- 直接看spring的配置吧 <!-- 数据源配置 --> <bean id"ds1" class"org.apache.commo…

四管前级怎么去掉高低音音调_一些歌曲音调太高怎么才能唱上去??

展开全部首先得提高肺活量 然后就是练声&#xff01;怎 样 练 声&#xff1a;练声的目的1&#xff0c;使歌唱发声系统各器官的肌肉更e68a84e8a2ad62616964757a686964616f31333236373231有力&#xff0c;并能协调一致。2&#xff0c;建立正确的声音概念。3&#xff0c;扩展音域&…