添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
1、字符串转为map
str_to_map(text[, delimiter1, delimiter2])
使用两个分隔符将文本拆分为键值对。 Delimiter1将文本分成K-V对,Delimiter2分割每个K-V对。对于delimiter1默认分隔符是',',对于delimiter2默认分隔符是'='。
示例:
select str_to_map('aaa:11&bbb:22', '&', ':');
select str_to_map('aaa:11&bbb:22', '&', ':')['aaa'];
select str_to_map('device_ds:2&uid_cnt:1','&',',')  --键值分割不到,值会出现Null
综合使用示范:
select a1.appkey,a1.appsource,index_key,index_value
from tab_sum a1 
lateral view explode(str_to_map(concat('device_ds:',a1.device_ds_cnt,'&','uid_cnt:',a1.uid_cnt),'&',':')) mid_list_tab as index_key,index_value;
2、字符串转为array
分割字符串函数: split
语法:  split(string str, stringpat)
返回值:  array
说明:
按照pat字符串分割str,会返回分割后的字符串数组
select split('aaa:11:bbb:22',':');
["aaa","11","bbb","22"]
select split('aaa:11:bbb:22',':')[0];
3、字符字段去重汇总转成array
collect_set函数:该函数的作用是将某字段的值进行去重汇总,产生Array类型字段。
drop table if exists xxxxx_tabletest;
CREATE TABLE xxxxx_tabletest(
  id string, 
  name string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'field.delim'=',', 
  'line.delim'='\n', 
  'serialization.format'=',');
insert into xxxxx_tabletest(id,name)
values
('1','A'),
('1','C'),
('1','B'),
('2','B'),
('2','C'),
('2','D'),
('3','B'),
('3','C'),
('3','D');
select id,collect_set(name) from xxxxx_tabletest group by id;
1       ["A","C","B"]
2       ["B","C","D"]
3       ["B","C","D"]
Time taken: 36.966 seconds, Fetched: 3 row(s)
1、字符串转为mapstr_to_map(text[, delimiter1, delimiter2])使用两个分隔符将文本拆分为键值对。 Delimiter1将文本分成K-V对,Delimiter2分割每个K-V对。对于delimiter1默认分隔符是',',对于delimiter2默认分隔符是'='。示例:select str_to_map('aaa:11&bbb:22', '&', ':')
with releases as (select '["us","ca","fr"]' as country) select split(regexp_extract(country,'^\\["(.*)\\"]$',1),'","') from releases; ["us","ca","fr"] -------- with releases as (select '["us:[abc]","ca:[abc]","fr:[abc]"]' as country) select split.
利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: 01_自动批量加载数据hive 02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) 04_HIve中的case when、cast及unix_timestamp的使用 05_复杂日志分析-需求分析 06_复杂日志分析-需求字段讲解及过滤 07_复杂日志分析-字段提取及临时表的创建 08_复杂日志分析-指标结果的分析实现 09_Hive数据文件的存储格式介绍及对比 10_常见的压缩格式及MapReduce的压缩介绍 11_Hadoop中编译配置Snappy压缩 12_Hadoop及Hive配置支持snappy压缩 13_Hive中的常见调优 14_Hive中的数据倾斜及解决方案-三种join方式 15_Hive中的数据倾斜及解决方案-group by 16_Hive中使用正则加载数据 17_Hive中使用Python脚本进行预处理
工作中,大多数时候会需要把json数组中的数据解析出来,现在会经常和后端打交道,后端同学就希望把正常的行列数据用json的形式给他们,他们使用起来方便,我看有的文章会写用udtf函数实现,不过本着能用内置函数绝不用自定义函数的原则(主要是我不会写),用内置函数实现也不是很难。 原数据形式: 希望转换成一个标准的json数组, 下装款型: ...
字符串转为map str_to_map(text[, delimiter1, delimiter2]) 使用两个分隔符将文本拆分为键值对。 Delimiter1将文本分成K-V对,Delimiter2分割每个K-V对。对于delimiter1默认分隔符是',',对于delimiter2默认分隔符是'='。 select str_to_map('aaa:11&bbb:22', '&amp...
SELECT CAST(‘00321’ AS BIGINT) FROM table; As a BIGINT it will show on the screen and in delimited text files as 321. 参考:Hive – Converting a string to bigint 补充知识:hive中bigint和varchar字段做关联,关联数据错误的解决方法 把bigint和varchar都隐式转换成String类型的就可以关联出正确的结果了 cast(t1.PARTY_NUM as str
1.将Mysql中的数据迁移到Hdfs文件系统中,然后通过Hive加载HDFS文件系统中的数据值 2.将Hive中的数据迁移到指定Mysql数据库中 1.数据迁移的过程中,由于hive的Null值存储为"\N",Mysql存储为NULL值,二者转换时需要注意,再数据迁移json模板中,"nullFormat": "\\N", 该配置信息就是解决了数据迁移是存在的Null值。 2.如果hive中没有数值DataX迁移时会出现异常 执行语句:python /opt/module/datax/bin/datax.py /opt/module/datax/job/xxx.json collect_list(id) id_array, concat_ws('',collect_list(id)) id_string, --array转string origin_id from( select concat('{',id,'}') id, origin_id --付款通知书id from ods.ods_awa_finance_income where
hive提供了复合数据类型: Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过c.a来访问域a Maps(K-V对):访问指定域可以通过["指定域名称"]进行,例如,一个Map M包含了一个group-》gid的kv对,gid的值可以通过M['group']来获取 Arrays:array中的
Hive中将字符串类型转换为JSON可以使用Hive内置的一些函数。以下是一个示例: 假设你有一个包含JSON字符串Hive表,名为`json_str_table`,其中有一个名为`json_str_col`的字符串类型列,你可以使用`get_json_object()`函数将字符串转换为JSON格式: SELECT get_json_object(json_str_col, '$') AS json_obj_col FROM json_str_table; 其中,`get_json_object()`函数的第一个参数是包含JSON字符串的列名,第二个参数是JSON字符串中要提取的属性路径。在这个示例中,我们将`' $ '`传递为第二个参数,以提取整个JSON对象。你可以根据需要更改第二个参数。 如果你的JSON字符串中包含数组,你可以使用`json_tuple()`函数将其转换为元组(tuple),如下所示: SELECT json_tuple(json_str_col, 'key1', 'key2', 'key3') FROM json_str_table; 其中,`json_tuple()`函数的第一个参数是包含JSON字符串的列名,后面的参数是要提取的属性名称。这将返回一个元组,其中包含指定的属性值。 需要注意的是,Hive中的JSON函数不支持复杂的JSON数据操作,如果你需要更复杂的JSON处理,建议使用其他工具或编程语言来完成。