原文: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 }

hive java导入CVS相关推荐

  1. hive数据导入导出

    Hive数据导入导出的几种方式 一,Hive数据导入的几种方式 首先列出讲述下面几种导入方式的数据和hive表. 导入: 本地文件导入到Hive表: Hive表导入到Hive表; HDFS文件导入到H ...

  2. 大数据——sqoop操作mysql和hive导出导入数据

    1.sqoop安装 (1)下载CDH版本的sqoop (2)解压并进行环境配置 环境变量为: export SQOOP_HOME=/home/sqoop-1.4.6-cdh5.15.1 export ...

  3. hive数据导入hbase

    将hive数据导入hbase 一.hive外部表映射hbase表 1. hbase里面创建表 2. 建立hive外部表并映射hbase表 3.测试 二.spark bulkload方式 1.准备事项 ...

  4. Java为啥不建议用通配符_为什么在Java导入语句中使用通配符不好?

    使用带有Java导入语句的通配符并不错. 在Clean Code中,Robert C. Martin实际上建议使用它们以避免长时间导入列表. 这是建议: J1: Avoid Long Import L ...

  5. 使用java导入某个msn帐号的好友列表并发送消息

    使用java导入某个msn帐号的好友列表并发送消息 导入信息的关键是如何对msn的通讯协议进行封装,这里会有两个选择,一个使用openfire(xmlapp协议),另外就是使用jml,前者配置起来相对 ...

  6. java导入、导出Excel文件

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  7. java导入excel 实例_Java数据导入功能之读取Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java读取excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套A ...

  8. java导入导出excel_Java导入导出Excel工具 easyexcel

    Java导入导出Excel工具  easyexcel 做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了.Java解析生成Excel比较有名 ...

  9. KUDU数据导入尝试一:TextFile数据导入Hive,Hive数据导入KUDU

    背景 SQLSERVER数据库中单表数据几十亿,分区方案也已经无法查询出结果.故:采用导出功能,导出数据到Text文本(文本>40G)中. 因上原因,所以本次的实验样本为:[数据量:61w条,文 ...

最新文章

  1. 给定数组 求和等于固定值 算法_[见题拆题] 大厂面试算法真题解析 - 第一期开张...
  2. 蹭课神器NABCD分析
  3. android 默认开关,android默认设置的开关
  4. springmvc重定向到另一个项目_SpringMVC——redirect重定向跳转传值
  5. MySQL与Python交互入门
  6. laravel 安装随笔
  7. Java 8 CompletableFuture
  8. .NET平台开源项目速览(12)哈希算法集合类库HashLib
  9. 信息学奥赛一本通(1317:【例5.2】组合的输出)
  10. Mybatis一二级缓存的理解
  11. Springboot下使用WebSocket和浏览器进行长连接通信
  12. 对数字信号处理中各种频率以及分辨率的理解
  13. android rs232串口协议,RS232串口协议详解-在路上.PDF
  14. CF1051D Bicolorings
  15. STM32驱动LCD1602程序(调试已成功)
  16. url重写(urlrewrite.xml)
  17. 各地级市系列环境指标数据(2003-2017年)
  18. 关于elasticsearch属性not_analyzed,坑
  19. 菜鸟使用RedHat Linux9.0极品笑话
  20. 献给准大三的童鞋们,想要在暑假里找个java实习工作.

热门文章

  1. php 多数据库联合查询,php如何同时连接多个数据库_PHP教程
  2. 百度地图API如何申请?(自认为比较详细,如解决了你的问题请收藏、点赞、关注!)
  3. Hibernate学习之hibernate.cfg.xml
  4. c语言 枚举类型 uint32_浅谈C语言枚举类型 | 附自创用法分享
  5. php 构造函数 返回值,php构造函数与析构函数实例分析
  6. mysql用户可以localhost登陆_【单选题】登陆MySQL服务器,默认的用户名为 A. user B. pwd C. root D. localhost...
  7. centos6.5 MySQL 服务器_启用CentOS6.5 64位安装时自带的MySQL数据库服务器
  8. unity 纹理压缩格式‘_纹理优化:让你的纹理也“瘦”下来
  9. linux下c语言读取roed文件,如何在Linux系统上安装Android4.4.docx
  10. ant design vue 树形控件_官宣!vue.ant.design 低调上线