目录

一、Hive中默认的分割符如下

二、分隔符的指定与使用

三、建好表之后更改字段分隔符


一、Hive中默认的分割符如下

分隔符 描述
\n 行分隔符
^A 字段分隔符 \001
^B array、struct的元素间的分隔符,map的键值对与键值对间分隔符 \002
^C map中键与值之间的 分隔符\003

二、分隔符的指定与使用

hive中在创建表时,一般会根据导入的数据格式来指定字段分隔符和列分隔符。一般导入的文本数据字段分隔符多为逗号分隔符或者制表符(但是实际开发中一般不用着这种容易在文本内容中出现的的符号作为分隔符),当然也有一些别的分隔符,也可以自定义分隔符。有时候也会使用hive默认的分隔符来存储数据。

hive (fdm_sor)> create table fdm_sor.mytest_tmp2(>  id int comment'编号',>  name string comment '名字'>  );hive (fdm_sor)> show create table mytest_tmp2;
CREATE  TABLE `mytest_tmp2`(`id` int COMMENT '编号', `name` string COMMENT '名字')
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' --hive默认的分割方式,即行为\n,列为^A
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'    --hive默认的存储格式为textfile
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION                                    --内部表的默认的存储路径'hdfs://hadoop102:9000/user/hive/warehouse/fdm_sor.db/mytest_tmp2'
TBLPROPERTIES ('transient_lastDdlTime'='1526176805')hive (fdm_sor)> create table  fdm_sor.mytest_tmp3(>   id int comment'编号',>  name string comment '名字'>  )>  row format delimited fields terminated by '\001'  --这里可以指定别的分隔符,如‘\t’,'$'等分隔符>  COLLECTION ITEMS TERMINATED BY '\002'  -- 集合间的分隔符>  MAP KEYS TERMINATED BY '\003'          -- Map键与值之间的分隔符>  LINES TERMINATED BY '\n'               -- 行分隔符  >  stored as textfile;                    -- 存储格式为textfilehive (fdm_sor)> show create table fdm_sor.mytest_tmp3;
OK
createtab_stmt
CREATE  TABLE `fdm_sor.mytest_tmp3`(`id` int COMMENT '编号', `name` string COMMENT '编号')
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001' LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION'hdfs://hadoop102:9000/user/hive/warehouse/fdm_sor.db/mytest_tmp3'
TBLPROPERTIES ('transient_lastDdlTime'='1526176859')

如上可以看出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’字符。否则报错。


hive (fdm_sor)>  create table  fdm_sor.mytest_tm4(>   id int comment'编号',>  name string comment '名字'>  )>  lines terminated by '\t';
FAILED: ParseException line 5:1 missing EOF at 'lines' near ')'

一般来说hive的默认行分隔符都是换行符,如果非要自定义行分隔符的话,可以通过自定义Inputformat和outputformat类来指定特定行分隔符和列分隔符,一般公司实际开发中也都是这么干的,具体使用,见后面博客。

当然如hive中集合数据类型struct ,map,array,也都有默认的字段分隔符,也都可以指定字段分隔符。hive中对于上述三个集合数据类型的默认字段分隔符是^B,八进制体现为‘\002’,用collection items terminated by '\002'语句来指定分隔符,对于map来说,还有键值之间的分割符,可以用map keys terminated by  '\003'(^C)来指定分隔符。

三、建好表之后更改字段分隔符

alter table xxx set SERDEPROPERTIES('field.delim'='\t');

hive的列分隔符和行分隔符的使用相关推荐

  1. Hive的列分隔符和行分隔符

    在创建Hive表时,默认行分隔符"^A",列分隔符"\n",这两项也是可以设置的.在实际开发中,一般默认使用默认的分隔符,当然有些场景下也会自定义分隔符. 创建 ...

  2. 详解hive的列分隔符和行分隔符的使用

    hive中在创建表时,一般会根据导入的数据格式来指定字段分隔符和列分隔符.一般导入的文本数据字段分隔符多为逗号分隔符或者制表符(但是实际开发中一般不用着这种容易在文本内容中出现的的符号作为分隔符),当 ...

  3. hive 如何将数组转成字符串_hive详细笔记(八)-Hive之列转行和行转列(附带讲解视频 )...

    1 行转列 1.1 函数 CONCAT(string A/col, string B/col-):返回输入字符串连接后的结果,支持任意个输入字符串; CONCAT_WS(separator, str1 ...

  4. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符...

    目录 awk基本语法 awk输出某几列 awk遍历文件行处理 awk中运行shell命令 方法1:awk 内置函数system 方法2 通过awk  print 交给bash awk中运行shell命 ...

  5. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符

    目录 awk基本语法 awk输出某几列 awk遍历文件行处理 awk中运行shell命令 方法1:awk 内置函数system 方法2 通过awk  print 交给bash awk中运行shell命 ...

  6. hive分隔符_HIVE-默认分隔符的(linux系统的特殊字符)查看,输入和修改

    这段时间做hive的时候,用到了系统默认分隔符.通常下面2中情况我们需要需要用到分隔符 1,制作table的输入文件,有时候我们需要输入一些特殊的分隔符 2,把hive表格导出到本地时,系统默认的分隔 ...

  7. lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

    lineseparator JDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法. 该方法不期待任何参数,并返回一个String ,它表示"取 ...

  8. 首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

    JDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法. 该方法不期待任何参数,并返回一个String ,它表示"取决于系统的行分隔符字符串.& ...

  9. 《Python Cookbook 3rd》笔记(5.3):使用其他分隔符或行终止符打印

    使用其他分隔符或行终止符打印 问题 你想使用 print() 函数输出数据,但是想改变默认的分隔符或者行尾符. 解法 可以使用在 print() 函数中使用 sep 和 end 关键字参数,以你想要的 ...

最新文章

  1. 「PKUWC2018」Minimax
  2. Spring4.X系列之AOP基础篇
  3. ROI(投资回报率 Return On Investment)
  4. go返回多个值和python返回多个值对比
  5. 移动端导出excel_连载系列【4】Excel开发移动端quot;APPquot;
  6. linux版本FTP下载
  7. JS-循环(while,for,嵌套)-跳转语句(break,continue)
  8. arcgis api for javascript中使用proxy.jsp
  9. [译]理解 Node.js 事件驱动架构
  10. 微信小程序不同类型demo集合含源码
  11. mybatis返回map键值对_Mybatis结果生成键值对
  12. C语言获取本机IP地址
  13. 华为机试真题 C++ 实现【数字涂色】
  14. 【mpeg1】mpeg1相关资料
  15. EL表达式可以使用indexof方法吗
  16. pwn-进阶-forgot
  17. yum命令的基本用法
  18. 表格对角线两边打字_表格对角线两边打字_表格斜线一分为二怎么打字(excel斜杠分割表格打字)...
  19. SRE运维面试相关高频题库
  20. 苹果倒数第三!酷安5月手机热度TOP10出炉,三星OPPO领跑

热门文章

  1. 国内电子商务网站分析报告
  2. linux系统打开远程端口,linux下3种检测远程端口是否打开的方法
  3. JS原型和原型链是什么?
  4. R 和 Python 可以兼得吗?
  5. C++中标准库 输出 puts()函数
  6. pytest.fixture如何像testng的beforeMethod一样使用
  7. PowerSI提取S参数(插损、回损、串扰分析)
  8. wxPython官方文档翻译第一期初稿
  9. 前端·在线随机生成图片 免费 API
  10. 222222222222