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相关资料
#>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)