原文: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;
|
14
|
public class MutilCharInputFormat extends TextInputFormat{
|
15
|
private static final Log log = LogFactory.getLog(MutilCharRecordReader.class);
|
18
|
public RecordReader<LongWritable, Text> getRecordReader(
|
19
|
InputSplit genericSplit, JobConf job, Reporter reporter)
|
21
|
reporter.setStatus(genericSplit.toString());
|
22
|
//创建MutilCharRecordReader并返回
|
23
|
return new MutilCharRecordReader((FileSplit)genericSplit,job);
|
hive java导入CVS相关推荐
- hive数据导入导出
Hive数据导入导出的几种方式 一,Hive数据导入的几种方式 首先列出讲述下面几种导入方式的数据和hive表. 导入: 本地文件导入到Hive表: Hive表导入到Hive表; HDFS文件导入到H ...
- 大数据——sqoop操作mysql和hive导出导入数据
1.sqoop安装 (1)下载CDH版本的sqoop (2)解压并进行环境配置 环境变量为: export SQOOP_HOME=/home/sqoop-1.4.6-cdh5.15.1 export ...
- hive数据导入hbase
将hive数据导入hbase 一.hive外部表映射hbase表 1. hbase里面创建表 2. 建立hive外部表并映射hbase表 3.测试 二.spark bulkload方式 1.准备事项 ...
- Java为啥不建议用通配符_为什么在Java导入语句中使用通配符不好?
使用带有Java导入语句的通配符并不错. 在Clean Code中,Robert C. Martin实际上建议使用它们以避免长时间导入列表. 这是建议: J1: Avoid Long Import L ...
- 使用java导入某个msn帐号的好友列表并发送消息
使用java导入某个msn帐号的好友列表并发送消息 导入信息的关键是如何对msn的通讯协议进行封装,这里会有两个选择,一个使用openfire(xmlapp协议),另外就是使用jml,前者配置起来相对 ...
- java导入、导出Excel文件
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- java导入excel 实例_Java数据导入功能之读取Excel文件实例
在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java读取excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套A ...
- java导入导出excel_Java导入导出Excel工具 easyexcel
Java导入导出Excel工具 easyexcel 做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了.Java解析生成Excel比较有名 ...
- KUDU数据导入尝试一:TextFile数据导入Hive,Hive数据导入KUDU
背景 SQLSERVER数据库中单表数据几十亿,分区方案也已经无法查询出结果.故:采用导出功能,导出数据到Text文本(文本>40G)中. 因上原因,所以本次的实验样本为:[数据量:61w条,文 ...
最新文章
- 给定数组 求和等于固定值 算法_[见题拆题] 大厂面试算法真题解析 - 第一期开张...
- 蹭课神器NABCD分析
- android 默认开关,android默认设置的开关
- springmvc重定向到另一个项目_SpringMVC——redirect重定向跳转传值
- MySQL与Python交互入门
- laravel 安装随笔
- Java 8 CompletableFuture
- .NET平台开源项目速览(12)哈希算法集合类库HashLib
- 信息学奥赛一本通(1317:【例5.2】组合的输出)
- Mybatis一二级缓存的理解
- Springboot下使用WebSocket和浏览器进行长连接通信
- 对数字信号处理中各种频率以及分辨率的理解
- android rs232串口协议,RS232串口协议详解-在路上.PDF
- CF1051D Bicolorings
- STM32驱动LCD1602程序(调试已成功)
- url重写(urlrewrite.xml)
- 各地级市系列环境指标数据(2003-2017年)
- 关于elasticsearch属性not_analyzed,坑
- 菜鸟使用RedHat Linux9.0极品笑话
- 献给准大三的童鞋们,想要在暑假里找个java实习工作.
热门文章
- php 多数据库联合查询,php如何同时连接多个数据库_PHP教程
- 百度地图API如何申请?(自认为比较详细,如解决了你的问题请收藏、点赞、关注!)
- Hibernate学习之hibernate.cfg.xml
- c语言 枚举类型 uint32_浅谈C语言枚举类型 | 附自创用法分享
- php 构造函数 返回值,php构造函数与析构函数实例分析
- mysql用户可以localhost登陆_【单选题】登陆MySQL服务器,默认的用户名为
A. user B. pwd C. root D. localhost...
- centos6.5 MySQL 服务器_启用CentOS6.5 64位安装时自带的MySQL数据库服务器
- unity 纹理压缩格式‘_纹理优化:让你的纹理也“瘦”下来
- linux下c语言读取roed文件,如何在Linux系统上安装Android4.4.docx
- ant design vue 树形控件_官宣!vue.ant.design 低调上线