Hive 是什么意思?

Hive 是什么意思?,第1张

hive的中文意思为蜂房;蜂箱;一箱蜜蜂;蜂群;忙碌的场所;繁忙的地方;把蜜蜂收入蜂箱。

hive可作动词和名词使用。英式读法[haɪv],美式读法[haɪv]。

1、作名词时的中文意思为蜂房;蜂箱;一箱蜜蜂;蜂群;忙碌的场所;繁忙的地方。

a structure made for bees to live in

蜜蜂居住的地方。

2、作动词时的中文意思为把蜜蜂收入蜂箱;贮备;聚居;从团体中分出。

The IT department is being hived off into a new company

信息技术部正被分离出来,成立新公司。

扩展资料:

一、hive的近义词

swarm

英式读音[swɔːm];美式读音[swɔːrm]

名词(n)一大群(蜜蜂等昆虫);一大群;一大批(向同方向移动的人)

动词(V)成群地来回移动;成群地飞来飞去

A dark cloud of bees comes swarming out of the hive

黑压压的一大群蜜蜂从蜂巢中飞出来。

二、短语用例

hive off

转让,出售(部分业务)

一、校验数字的表达式

数字:^[0-9]$

n位的数字:^\d{n}$

至少n位的数字:^\d{n,}$

m-n位的数字:^\d{m,n}$

零和非零开头的数字:^(0|[1-9][0-9])$

非零开头的最多带两位小数的数字:^([1-9][0-9])+(\[0-9]{1,2})$

带1-2位小数的正数或负数:^(\-)\d+(\\d{1,2})$

正数、负数、和小数:^(\-|\+)\d+(\\d+)$

有两位小数的正实数:^[0-9]+(\[0-9]{2})$

有1~3位小数的正实数:^[0-9]+(\[0-9]{1,3})$

非零的正整数:^[1-9]\d$ 或 ^([1-9][0-9]){1,3}$ 或 ^\+[1-9][0-9]$

非零的负整数:^\-[1-9][]0-9"$ 或 ^-[1-9]\d$

非负整数:^\d+$ 或 ^[1-9]\d|0$

非正整数:^-[1-9]\d|0$ 或 ^((-\d+)|(0+))$

非负浮点数:^\d+(\\d+)$ 或 ^[1-9]\d\\d|0\\d[1-9]\d|0\0+|0$

非正浮点数:^((-\d+(\\d+))|(0+(\0+)))$ 或 ^(-([1-9]\d\\d|0\\d[1-9]\d))|0\0+|0$

正浮点数:^[1-9]\d\\d|0\\d[1-9]\d$ 或 ^(([0-9]+\[0-9][1-9][0-9])|([0-9][1-9][0-9]\[0-9]+)|([0-9][1-9][0-9]))$

负浮点数:^-([1-9]\d\\d|0\\d[1-9]\d)$ 或 ^(-(([0-9]+\[0-9][1-9][0-9])|([0-9][1-9][0-9]\[0-9]+)|([0-9][1-9][0-9])))$

浮点数:^(-\d+)(\\d+)$ 或 ^-([1-9]\d\\d|0\\d[1-9]\d|0\0+|0)$

校验字符的表达式

汉字:^[\u4e00-\u9fa5]{0,}$

英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

长度为3-20的所有字符:^{3,20}$

由26个英文字母组成的字符串:^[A-Za-z]+$

由26个大写英文字母组成的字符串:^[A-Z]+$

由26个小写英文字母组成的字符串:^[a-z]+$

由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

可以输入含有^%&',;=$\"等字符:[^%&',;=$\x22]+

禁止输入含有~的字符:[^~\x22]+

三、特殊需求表达式

Email地址:^\w+([-+]\w+)@\w+([-]\w+)\\w+([-]\w+)$

域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/

InternetURL:[a-zA-z]+://[^\s] 或 ^>往 Hive 表 insert 数据后,查询时出现个别行字段错位,插入语句如下:

首先测试源表数据查询:

查询来的数据没发现有什么异常;照理说逐字段查出来没问题,再逐字段插入应该不会错位。实际上 hive 的 insert 跟想象中传统的 insert 不太一样。

由于不是全表错位,而是个别行错位,首先根据关键字查询 hive 错位那行数据,导出文本到本地。肉眼查看发现有部分"乱码"(异常字符: ^M ,如果经验丰富一眼就能看出这个是 \001 ,vim 下可以通过组合键 ctrl + a 输出),怀疑是异常字符导致,通过 linux od 命令查看 16 进制编码,如图所示:有好几个 \001 ,多么眼熟的数字啊 - 这是 hive 默认字段分隔符。
一般 insert A from select B 我们没有关注 A 表的字段分隔符,看到 \001 直觉跟 A 表的字段分隔符有关:
查看 A 的表结构,字段分隔符默认的 \001 。存储类型: textfile 。

进一步分析:textfile 是 hive 默认的存储结构,行存储,存储的实际数据结构跟表逻辑结构一致。导入数据时会直接把数据文件拷贝到 hdfs上不进行处理。源文件可以直接通过hadoop fs -cat 查看; 例如 text 字段分隔符: \001 , 换行符: \n,表在 hdfs 实际存储的格式为:
v1\001v2\001v3\n
v4\001v5\001v5

猜测字段值缺失错位的根源在于:文本中的不可见字符 \001 插入到表中,而表以 \001 作为字段分隔符,导致查询字段错位。

再来看这条 SQL:

我们可以还原这条 SQL 从插入到查询异常的全流程:

第一种方式可行且更加合理;
第二种方式可行,一种补救方案,但是 orc 等格式不支持 load *** 作
第三种方式临时解决问题,不能根本上解决问题;

对 hive 的基础知识了解不足,导致问题出现排查速度较慢。
数据源头进行必要的数据 ETL 清洗,对字段分隔符的处理必须谨慎。
Hive 表尽可能使用 orc parquet 这类存储方式,空间占用,查询效率相对 textfile 有大幅提升,同时可以规避字段分隔符,错位等问题。
更深入一步 了解 hive orc 这类存储方式实现原理。

refer:>#hive相关资料

#>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13406079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存