Hive应用:选取分隔符

Hive应用:选取分隔符

在使用hive的时候,分隔符是必不可少的,当学习的时候使用的都是常规分隔符,好比:逗号“,”、竖线“|”等,这些键盘上均可以直接输入的字符,可是这些字符只要是键盘上的,在针对复杂的业务逻辑的时候,都会失效。sql

好比你有一个备注字段,这个字段容许用户输入输入键盘上的任何字符,一旦用户输入了你选择的分隔符,那么Hive在使用这个数据的时候,就会致使hive表中的字段错位。vim

使用多个组合字符,也能够成为一种选择,可是有些导入导出工具,不支持多字符分隔符,好比:阿里的DATAX就不支持多字符分隔符。bash

那么如今咱们就须要一种字符,是用户输入不了的,计算机又存在的字符,下面这些字符则能够知足需求!服务器

一、特殊字符

如下这些字符是能够在Hive中应用,而且DATAX也支持的:工具

char digraph hex dec official name Unicode
^@ NU 0x00 0 NULL (NUL)N \u0000
^A SH 0x01 1 START OF HEADING (SOH) \u0001
^B SX 0x02 2 START OF TEXT (STX) \u0002
^C EX 0x03 3 END OF TEXT (ETX) \u0003
^D ET 0x04 4 END OF TRANSMISSION (EOT) \u0004
^E EQ 0x05 5 ENQUIRY (ENQ) \u0005
^F AK 0x06 6 ACKNOWLEDGE (ACK) \u0006
^G BL 0x07 7 BELL (BEL) \u0007
^H BS 0x08 8 BACKSPACE (BS) \u0008
^I HT 0x09 9 CHARACTER TABULATION (HT) \u0009
^@ LF 0x0a 10 LINE FEED (LF) \u0010
^K VT 0x0b 11 LINE TABULATION (VT) \u0011
^L FF 0x0c 12 FORM FEED (FF) \u0012
^M CR 0x0d 13 CARRIAGE RETURN (CR) \u0013

注意:特殊符号中的^ 和键盘上的^ 字符是不同的。另外特殊符号中的^和后面跟的字符是一体的,也就是说,两个字符是一个符号。oop

二、经过digraph输入

Vim中显然没有什么特殊字符选择工具,但提供了两种输入特殊字符的方式:学习

  • 一、经过两个字符来输入一个特殊字符(digraph)。
  • 二、直接经过编码值(ASCII或Unicode)输入。

其中digraph是一种相似双拼的方法,连续输入两个字符来表示一个特殊字符。须要先按下前导键<Ctrl-K>,例如在编辑模式下输入:测试

<Ctrl-K>Rg

如上的输入,将会出现®字符,其中"Rg"是该字符的digraph(双拼)。编码

特殊字符表中的digraph列就是这些字符的双拼输入字符,输入时注意大小写,双拼输入是区分大小写的。.net

在Windows中是没法输入特殊字符的,可使用Unicode码进行输入。

例如:要使用^A做为分割字符能够这样写:

create external table city(city_id string,city_name string ) row format delimited fields terminated by '\u0001' location 'hdfs://hadoop01:8090/test/city';

三、测试数据

建表语句:

create external table city(city_id string,city_name string,pinyin string,pingying2 string,code string,db_name string,city_status string,default_areas string,yum_city_name string) row format delimited fields terminated by '\u0000' location 'hdfs://hadoop01:8090/test/city';

如上的代码本人使用的^@字符做为分隔符的。

如下是Eclipse链接Hadoop查看的数据格式样例:

将此文件直接传到Linux服务器中,使用vim打开,能够发现,字段之间的分隔符以下:

Hive查询出来的数据样例:

这里须要说一下,在特殊字符表中有两个^@ 符号,通过本人测试,这两个符号在做为分隔符的时候是同样的,能够认为是同样的。只是输入的时候不同。

四、查看隐藏字符的方法

在Linux系统中,文本文件中是存在隐藏字符的,须要使用如下命令才能查看到:

cat

命令以下:

cat -A fileName

vim

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

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

上一篇:Hive应用:设置字段默认值

下一篇:Hive语法:union

相关文章
相关标签/搜索