前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive应用:选取分隔符 原

Hive应用:选取分隔符 原

作者头像
云飞扬
发布2019-03-12 17:08:31
2K0
发布2019-03-12 17:08:31
举报
文章被收录于专栏:星汉技术星汉技术

Hive应用:选取分隔符

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

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

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

那么现在我们就需要一种字符,是用户输入不了的,计算机又存在的字符,下面这些字符则可以满足需求!

1、特殊字符

以下这些字符是可以在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

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

2、通过digraph输入

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

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

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

代码语言:javascript
复制
<Ctrl-K>Rg

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

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

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

例如:要使用^A作为分割字符可以这样写:

代码语言:javascript
复制
create external table city(city_id string,city_name string ) row format delimited fields terminated by '\u0001' location 'hdfs://hadoop01:8090/test/city';

3、测试数据

建表语句:

代码语言:javascript
复制
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查询出来的数据样例:

这里需要说一下,在特殊字符表中有两个^@ 符号,经过本人测试,这两个符号在作为分隔符的时候是一样的,可以认为是一样的。只是输入的时候不一样。

4、查看隐藏字符的方法

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

cat

命令如下:

代码语言:javascript
复制
cat -A fileName

vim

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

代码语言:javascript
复制
set list #显示隐藏字符
set nolist #取消显示隐藏字符
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/11/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hive应用:选取分隔符
    • 1、特殊字符
      • 2、通过digraph输入
        • 3、测试数据
          • 4、查看隐藏字符的方法
            • cat
            • vim
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档