精华内容
下载资源
问答
  • [Hive_3] Hive 建表指定分隔符

    千次阅读 2018-12-25 11:36:00
     Hive 建表示例及指定分隔符 1. Hive 建表 Demo  在 Hive 中输入以下命令创建表 user2 create table users2 (id int, name string, age int) row format delimited fields terminated by '\t';  ...

    0. 说明

      Hive 建表示例及指定分隔符

     


     

    1. Hive 建表 Demo

      在 Hive 中输入以下命令创建表 user2

    create table users2 (id int, name string, age int) row format delimited fields terminated by '\t';

     

      插入数据

    insert into users2 values(1,'tom',18);

     

     

     

     


     

    2. 分隔符类型 

      字段分隔符

    fields terminated by '\t'

     

      array 类型成员分隔符

    collection items terminated by ','

     

      map 的 Key 和 Value 之间的分隔符

    map keys terminated by ':'

     

      行分隔符,必须放在最后

    lines terminated by '\n'

     

     

     

     

     

     

     

     


     

    转载于:https://www.cnblogs.com/share23/p/10172995.html

    展开全文
  • 不知道你是否会有会这样的苦恼,就是从... 首先我们明确,我们是在建表的时候就指定了导入数据时的分隔符的,建表的时候会有三种场景需要考虑: 1、正常建表(default); 2、指定特定的特殊符号作为分隔符; ...

      不知道你是否会有会这样的苦恼,就是从hdfs或者file中导入数据到Hive建数仓的时候,因为数据是数据流前段的小GG用特殊符号分隔的,然后导致你导入数据时一脸蒙圈?

      这篇教程可能会帮到你。

        

      首先我们明确,我们是在建表的时候就指定了导入数据时的分隔符的,建表的时候会有三种场景需要考虑:

      1、正常建表(default);

      2、指定特定的特殊符号作为分隔符;

      3、使用多字符作为分隔符;

      下面详细讲一下这三种场景在使用文件导入(关于数据导入Hive数仓的,后面有空会发相关文章记录)的情景下怎么指定分隔符:

     

    一、正常建表,采用默认的分隔符:

      hive 默认的字段分隔符为ascii码的控制符\001,建表的时候用fields terminated by '\001',如果要测试的话,造数据在vi 打开文件里面,用ctrl+v然后再ctrl+a可以输入这个控制符\001。按顺序,\002的输入方式为ctrl+v,ctrl+b。以此类推。

     

     

    二、指定特定的特殊符号作为分隔符:

    CREATE TABLE test(id int, name string ,tel string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LINES TERMINATED BY '\n'STORED AS TEXTFILE;

    上面使用了'\t'作为了字段分隔符,'\n'作为换行分隔符。如果有特殊需求,可以自己动手改一下这两个符号就行了。

     

     

    三、使用多字符作为分隔符:

    假设我们使用【##】来作为字段分隔符,【\n】作为换行分隔符,则这里有两个方法:

    1、使用MultiDelimitSerDe的方法来实现:

    CREATE TABLE test(id int, name string ,tel string) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="##") LINES TERMINATED BY '\n'STORED AS TEXTFILE;

    2、使用RegexSerDe的方法实现:

    CREAET TABLE test(id int, name string ,tel string) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "^(.*)\\#\\#(.*)$") LINES TERMINATED BY '\n'STORED AS TEXTFILE;

      至于你要用什么特殊符号,就依瓢画葫芦应该没问题,有什么问题可以发出来一起讨论下。

     

      上面应该能够说明和解决问题了。

    展开全文
  • 针对hive的rcfile、textfile、SequenceFile 三种文件类型的,单分隔符和多分隔符的测试 一共六情况: =========================================================================== 第一种: 《rcfile 单分隔...

    针对hive的rcfile、textfile、SequenceFile 三种文件类型的,单分隔符和多分隔符的测试

    一共六情况:

    ===========================================================================

    第一种:

    《rcfile 单分隔符》

    create table hive_yl06.tcl_sing_rcfile(

    city_name STRING comment '市名称',

    city_code varchar(10) comment '市编码'

    ) comment 'tcl_sing_rcfile'

    row format delimited fields terminated by '\t'

    stored as rcfile;

     

    insert into hive_yl06.tcl_sing_rcfile(city_name,city_code) values('111111111111','22222222222');

    结论是:rcfile 单分隔符 可以插入成功(不可以load形式添加数据)

     

    第二种(1):

    《rcfile 多隔符(分隔符为\u0005\u0005\u0005) 序列化使用org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe》

     

    create table hive_yl06.tcl_mul_rcfile(

    city_name STRING comment '市名称',

    city_code STRING comment '市编码'

    ) comment 'tcl_mul_rcfilee'

    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'

    WITH SERDEPROPERTIES ("field.delim" = "\u0005\u0005\u0005")

    stored as rcfile;

     

    insert into hive_yl06.tcl_mul_rcfile(city_name,city_code) values('111111111111','22222222222');

    结论是: 不行

     

    第二种(2):

    《rcfile 多隔符(分隔符为@@@) 序列化使用org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe》

    create table hive_yl06.tcl_mul_2_rcfile(

    city_name STRING comment '市名称',

    city_code STRING comment '市编码'

    ) comment 'tcl_mul_2_rcfile'

    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'

    WITH SERDEPROPERTIES ("field.delim" = "@@@")

    stored as rcfile;

     

    insert into hive_yl06.tcl_mul_2_rcfile(city_name,city_code) values('111111111111','22222222222');

    结论是: 不行

     

    第三种(1):

    《rcfile 多隔符 序列化使用org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe

    create table hive_yl06.tcl_mul_rcfile(

    city_name STRING comment '市名称',

    city_code STRING comment '市编码'

    ) comment 'tcl_mul_rcfilee'

    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'

    WITH SERDEPROPERTIES ("field.delim" = "\u0005\u0005\u0005")

    stored as rcfile;

     

    insert into hive_yl06.tcl_mul_rcfile(city_name,city_code) values('111111111111','22222222222');

    结论是: 可以(但是不能以load形式添加数据)

     

    第三种(2):

    《rcfile 多隔符 序列化使用org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe

    create table hive_yl06.tcl_mul_3_rcfile(

    city_name STRING comment '市名称',

    city_code STRING comment '市编码'

    ) comment 'tcl_mul_2_rcfile'

    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'

    WITH SERDEPROPERTIES ("field.delim" = "@@@")

    stored as rcfile;

     

    insert into hive_yl06.tcl_mul_3_rcfile(city_name,city_code) values('111111111111','22222222222');

    结论是:可以(但是不能以load形式添加数据)

     

     

     

    第四种:

    《textfile 多隔符 序列化使用org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe》

    create table hive_yl06.tcl_mul_4_rcfile(

    city_name STRING comment '市名称',

    city_code STRING comment '市编码'

    ) comment 'src_bug_test_rcfile'

    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'

    WITH SERDEPROPERTIES ("field.delim" = "\u0005\u0005\u0005")

    stored as textfile;

    insert into hive_yl06.tcl_mul_4_rcfile(city_name,city_code) values('111111111111','22222222222');

    结论是:可以(可以load形式添加数据,但是数据不对)

     

     

    ===========================================================

    SequenceFile 本身不支持load

     

    第五种:

    《 SequenceFile 单分隔符》

    create table hive_yl06.tcl_sf_1_SequenceFile(

    city_name STRING comment '市名称',

    city_code varchar(10) comment '市编码'

    ) comment 'tcl_sig_1_rcfile'

    row format delimited fields terminated by '\t'

    stored as SequenceFile;

     

    insert into hive_yl06.tcl_sf_1_rcfile(city_name,city_code) values('111111111111','22222222222');

     

    结论是:可以(不可以load形式添加数据)

     

    第六种:

    《 SequenceFile 多分隔符 序列化使用org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe》

    create table hive_yl06.tcl_sf_2_SequenceFile(

    city_name STRING comment '市名称',

    city_code STRING comment '市编码'

    ) comment 'tcl_sf_2_rcfile'

    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'

    WITH SERDEPROPERTIES ("field.delim" = "\u0005\u0005\u0005")

    stored as SequenceFile;

    insert into hive_yl06.tcl_sf_2_rcfile(city_name,city_code) values('111111111111','22222222222');

    结论是:可以(不可以load形式添加数据)

     

    ===========================================================

     

     

    insert overwrite table tcl_1_rcfile select * from tcl_before_rcfile;

    insert table tcl_mul_3_rcfile select * from tcl_mul_4_rcfile;

     

     

     

     

     

    结论:

    ① 对于rcfile、SequenceFile 两种文件类型无论是单分隔符还是多分隔符,都不支持load添加数据;

    ② 对于rcfile的多分隔符,创建表时的序列化类要用org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe 而不是org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe;否则插入不进去;

    ③ 对于多分隔符的textfile ,虽然能load进表但是数据时错位的。

     

    展开全文
  • Hive建表-分隔符

    2021-05-23 17:32:40
    hive建表中,默认的分隔符为 ‘,’ ,可以指定想用的分隔符 hive默认的列分割类型为org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,这其实就是^A分隔符,hive中默认使用^A(ctrl+A)作为列分割符,如果用户...

     

    在hive建表中,默认的分隔符为  ‘,’ ,可以指定想用的分隔符

    hive默认的列分割类型为org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe,这其实就是^A分隔符,hive中默认使用^A(ctrl+A)作为列分割符,如果用户需要指定的话,等同于row format delimited fields terminated by '\001',因为^A八进制编码体现为'\001'.所以如果使用默认的分隔符,可以什么都不加,也可以按照上面的指定加‘\001’为列分隔符,效果一样。       hive默认使用的行分隔符是'\n'分隔符 ,也可以加一句:LINES TERMINATED BY '\n' ,加不加效果一样。但是区别是hive可以通过row format delimited fields terminated by '\t'这个语句来指定不同的分隔符,但是hive不能够通过LINES TERMINATED BY '$$'来指定行分隔符,目前为止,hive的默认行分隔符仅支持‘\n’字符。否则报错。

     

    下面是一些特殊字符:

     

     查看隐藏字符的方法:

    cat  -A filename

     

    vim
    使用vim进入编辑文件的命令模式,使用以下命令:

    set list #显示隐藏字符
    set nolist #取消显示隐藏字符

    展开全文
  • 不知道大家有没有遇到过这个问题: hive建表指定字段分隔符为制表符’\t’,然后在windows上按照hive表格式写好的文件,上传到linux服务器,之后利用hadoop fs -put命令将文件上传至hdfs,之后去hive表中查询数据...
  • hive建表分隔符问题

    千次阅读 2020-08-30 15:31:58
    hive 默认的字段分隔符为ascii码的控制符\001,建表的时候用fields terminated by ‘\001’,如果要测试的话,造数据在vi 打开文件里面,用ctrl+v然后再ctrl+a可以输入这个控制符\001。按顺序,\002的输入方式为ctrl+v...
  • hive是怎样保存元数据&内部表和外部表的区别: https://www.jianshu.com/p/2ea08633b790 Hive的分区表 https://www.jianshu.com/p/69efe36d068b
  • hive创建table时指定分隔符

    千次阅读 2019-05-23 17:38:31
    由于hive由java编写,所以row format delimited fields terminated by 后也可以使用java的方式输入特殊字符,比如用...比如hive创建表格的默认分隔符为SOH字符,ASCII码中的序号为1,所以可以用’\001’表示。 数据...
  • Hive中使用textfile建表,存在map、array、和struct集合类型,那如果同时存在这三种格式时,建表语句的分隔符应该怎么指定呢? 一、实例: 1、建表语句 create external table test.class_info( class string, ...
  • -----------------------------------------------------------...指定分隔符 ------------------------------------------------------------------ use an_pafc_safe;  create table an_pafc_safe.agg_lbk_toa...
  • hive 中tab分隔符导致的数据异常

    千次阅读 2019-09-29 21:28:52
    1.在hive建表时,如果使用tab \t作为分隔符, 一定要保证各个字段里没有该字符,不然会顺延数据; 2.如果是其他分隔符分隔,但是字段里仍然含有\t tab 分隔符,在使用select数据时仍然会出现数据顺延,所以也要对...
  • Hive--建表以及表字段分隔符

    千次阅读 2020-11-09 17:12:58
    Hive建表以及表字段分隔符 Tips: 1.最后一个字段不需要加逗号; 2.external 是外部表的标志,不加关键字则是内部表,外部表删不掉数据。一般做测试表的话建议建内部表,删除方便; 3.分区字段 partition by('XXXX...
  • hive 创建表——指定分隔符

    万次阅读 2017-04-10 15:22:54
    hive 创建表——指定分隔符 hive创建表的时候,为了后期使用方便,能够自定义分隔符。 如下: create table student(id string,birthday string,grade int,m1 int,m2 int,m3 int,m4 int,memo string) row format ...
  • 1、hive表格简单创建create table test(id int,name string,tel string)然后show tables 就可以查看到已创建的表格了2、指定分隔符存储格式create table test(id int, name string ,tel string) ROW FORMAT ...
  • Hive建表时多字符分割

    千次阅读 2019-07-31 13:59:10
    一般hive建表的时候都会根据数据的分隔符进行建表,表的分隔符分三种 1,默认分隔符 \n 行分隔符 ^A 字段分隔符,八进制表示为\001, ^B array或struct中为元素分隔符,map中为key-value分隔符\002 ^...
  • 建表语句如下: create table test_toutiao(id string, tag1 int,tag2 string,question string,answer string) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES...
  • hive自定义行分隔符

    2020-05-28 22:42:09
    首先交代一下背景: 通过spring消费RMQ的数据写到hdfs,从一开始就预料到直接写textfile会有错行乱行的问题,...查看hive默认的textfile 的inputformat 默认的TextInputFormat在hadoop-mapreduce-client-core包里面
  • 指定分隔符吗? ![CSDN移动问答][1] [1]: http://f.hiphotos.baidu.com/zhidao/pic/item/eac4b74543a98226ca40e6968882b9014b90ebfa.jpg 如图所示的数据,在建表时具体该怎么建?分隔符该如何制定?
  • hive建表时跳过前n行或后n行 tblproperties( "skip.header.line.count"="n", --跳过文件行首n行 "skip.footer.line.count"="n" --跳过文件行尾n行 )
  • hive 数据库操作 创建数据库 create database if not ...说明:hive的表存放位置模式是由hive-site.xml当中的一个属性指定的 <name>hive.metastore.warehouse.dir</name> <value>/user/hive/...
  • Hive中存在map、array、和struct格式,那如果同时存在这三种格式时,建表语句的分隔符应该怎么指定呢?        一、 先说答案       先说答案: ...
  • hive表修改map分隔符

    2020-10-10 18:16:07
    修改hive表属性用如下格式: alter table tablename set serdeproperties(‘属性名’=‘属性值’);...如修改hive表的map分隔符属性为 ‘:’ : alter table table1 set serdeproperties(‘mapkey.delim’=’:’); ...
  • CREATE TABLE `table_name` ( `col1` string COMMENT '字段1', `col2` string COMMENT '字段2' ...ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"=
  • Hive建表语句

    千次阅读 2020-12-22 09:47:01
    Hive建内部表 -- 创建一个内部表 create table if not exists student( id int, name string ) row format delimited fields terminated by '\t' stored as textfile location '/home/hadoop/hive/warehouse/...建表
  • sorted by 指定排序字段和排序规则 row format 指定表文件字段分隔符 storted as指定表文件的存储格式, 常用格式:SEQUENCEFILE, TEXTFILE, RCFILE,如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据...
  • 详解hive的列分隔符和行分隔符的使用

    万次阅读 多人点赞 2018-05-13 10:42:40
    hive中在创建表时,一般会根据导入的数据格式来指定字段分隔符和列分隔符。一般导入的文本数据字段分隔符多为逗号分隔符或者制表符(但是实际开发中一般不用着这种容易在文本内容中出现的的符号作为分隔符),当然也...
  • ②用vi编辑器Ctrl+v然后Ctrl+a后输入的’^A’即为’\001’ #创建t_t5,不指定分隔符 hive (xiaoliu)> create table t_t5(id int,attention string); [xiaokang@hadoop hive_data]$ vi t_t5.txt 1^A微信公众号 2^A...
  • 1.hive配置调整后,重启,指定组合分隔符时,hive可正常建表,可正常操作数据(包括分组查询,数据复制) 2.spark-shell或spark-submit涉及到用spark.sql获取hive数据时,仍会出现异常,经过验证,启动spark环境时,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,240
精华内容 1,296
关键字:

hive建表指定分隔符