2 u011397715 u011397715 于 2014.09.18 17:38 提问

如何指定hive的列分隔符?

默认hive的字段分隔符(field delimiter)可以通过row terminated或者重写InputFormat来改写,但是对于列分隔符这样做就不行,我是这么做的:
@Override
public boolean next(LongWritable key, Text value) throws IOException {
while (reader.next(key, text)) {

            String strReplace = text.toString().toLowerCase()
                    .replaceAll("\u0002", "\n");
            Text txtReplace = new Text();
            txtReplace.set(strReplace);
            value.set(txtReplace.getBytes(), 0, txtReplace.getLength());
            return true;
        }
        return false;
    }

重写inputformat放到hive的lib里不行,如果是这样改变字段分隔符是可以的,有没有办法指定列分隔符? 因为我文件里的数据都是通过'\u0002'来分割每行数据的,先谢谢各位大神了!

1个回答

sky_walker85
sky_walker85   Rxr 2014.11.18 16:48

我有一个不懂的地方问一下,字段分隔符和列分隔符有什么区别吗?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
hive指定行分割符和列分隔符
指定行分割符和列分隔符 由于默认的是能指定列分隔符,但是不可以指定行分隔符,所以这个时候,我们存在hdfs上的数据有的可能是\001是列分隔符,和\002是分隔符这个时候就得重写一下inputformat来使用了。    package com.hcr.hadoop.hive; import java.io.IOException; import java.io.UnsupportedE
详解hive的列分隔符和行分隔符的使用
      hive中在创建表时,一般会根据导入的数据格式来指定字段分隔符和列分隔符。一般导入的文本数据字段分隔符多为逗号分隔符或者制表符(但是实际开发中一般不用着这种容易在文本内容中出现的的符号作为分隔符),当然也有一些别的分隔符,也可以自定义分隔符。有时候也会使用hive默认的分隔符来存储数据。hive (fdm_sor)> create table fdm_sor.mytest_tmp...
如何让hive支持多字符分割列
默认情况下,hive仅支持单个字符来进行列分割。实际工作中,为了防止实际数据中,包含列分隔符,常使用多个字符串来分割数据列。 可以在hive建表语句中,使用built-in的 org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe类, 来使你的表支持多字符分割列。 Hive测试版本为:hive-1.1.0-cdh5.7.1,其他版本需自行测
hive指定多个字符作为列分隔符
http://my.oschina.net/u/1167806/blog/200808?fromerr=t8alHu4x
hive创建table时指定分隔符
  由于很多数据在hadoop平台,当从hadoop平台的数据迁移到hive目录下时,由于hive默认的分隔符是/u0001,为了平滑迁移,需要在创建表格时指定数据的分割符号,语法如下:  create table test(uid string,name string)row format delimited fields terminated by /t;通过这种方式,完成分隔符的
hive指定多个字符作为列分隔符的问题说明
1、问题:HDFS文件上列分隔符是##,hive建表时直接用##,发现输出的字段和文件不一致。       建表语句如下:       ROW FORMAT DELIMITED FIELDS TERMINATED BY '##' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORM
Sqoop导入hive分隔符问题
Sqoop从Oracle导入数据到Hive,示例: [plain] view plain copy sqoop import --connect jdbc:oracle:thin:@oracle-host:port:orcl --username name--password passwd --hive-import -table tablename
hive建表时对字段间分割符的限制
1、数据文件中,每一行的字段用@$_$@来区分,于是测试数据可以这样: 1@$_$@xu@$_$@30@$_$@student 2、创建表的语句 CREATE EXTERNAL TABLE user_table (userid string,username string,age string,title string ) row format delimited fields term
hive 创建表——指定分隔符
hive 创建表——指定分隔符 hive创建表的时候,为了后期使用方便,能够自定义分隔符。 如下: create table student(id string,birthday string,grade int,m1 int,m2 int,m3 int,m4 int,memo string) row format delimited fields terminated by ','
Hive中将查询结果导出到指定分隔符的文件中
在Hive0.11.0版本中新引进了一个新的特性,当用户将Hive查询结果输出到文件中时,用户可以指定列的分割符,而在之前的版本是不能指定列之间的分隔符。 在Hive0.11.0之前版本如下使用,无法指定分隔符,默认为\x01: hive (hive)> insertoverwrite local directory '/home/hadoop/export_hive' select * fr