
big-data
艾斯比的日常
简单,快乐,分享
展开
-
spark 如何判断两个数组的交集
这里直接给出例子select case when array_intersect(array('a','b','c'), array('a', 'd'))[0] is null then 0 else 1 end解释下, 这个函数array_intersect (array ('a','b','c'), array ('a', 'd')) 是求两个数组的交集获取 0 号元素 (无需担心索引越界), 如果是空, 那么通过 case when … then … else … end 的语法, 将结果原创 2022-03-29 18:02:34 · 2875 阅读 · 0 评论 -
hive 如何使用 group_concat
mysql 有 group_concat, 用于把每行的结果, 使用逗号分隔, 连接为一个文本, 常搭配 group by 语句hive 里没有 group_concat 语句, 可以使用以下语句替换select concat_ws(',', collect_list(rule_id) rule_ids from rule group by rule_id;...原创 2022-03-25 20:13:56 · 8751 阅读 · 1 评论 -
宽表, 窄表, 维度表, 事实表的区别
在数据开发里, 会涉及到一些概念: 宽表, 窄表, 维度表, 事实表宽表: 把多个维度的字段都放在一张表存储, 增加数据冗余是为了减少关联, 便于查询. 查询一张表就可以查出不同维度的多个字段窄表: 和我们 mysql 普通表三范式相同, 把相同维度的字段组成一张表, 表和表之间关联查询其他维度数据. 维度表: 包含维度编码和该维度下的多个属性事实表: 包含一个业务事件的相关属性举例宽表包含性别, 年龄, 各个用户身份维度表事实表...原创 2022-03-16 21:23:47 · 14753 阅读 · 0 评论 -
hive 如何解析包含 json 的字符串字段
语法使用 lateral view json_tuple (表字段, json 字段) 视图别名 as 字段别名这里举例查询 micloud.va_log 表查询 json 字符串字段 msginfo 的 env 字段查询 json 字符串字段 extra 的 salary 字段查询结果会跟在最末尾的列select * from micloud.va_loglateral view json_tuple(msginfo, 'env') json1 as envlateral view jso原创 2022-03-07 20:48:25 · 2240 阅读 · 0 评论 -
hive 的 order by, sort by, distribute by, cluster by 区别
order by 全局排序 sort by 在每个 reducer 下排序, 数据划分到哪个 reducer 是随机的, 一般搭配 distribute by 使用 distribute by 指定数据划分到哪个 reducer 的依据字段, 例如 distribute by salary, 表示根据薪水判断使用哪个 reducer 排序 cluster by 等效于 sort by 加上 distribute by, 并且固定是 asc 的排序. 例如 distribute by salary.原创 2022-03-06 14:20:09 · 1437 阅读 · 0 评论 -
如何查询 hive 分区表的某个分区数据是否存在
假如以 date 和 job_id 两个字段作为分区select count(*) from profile.user_crowd where date = 20220304 and job_id = 12345使用 spark 判断结果val date = 20220304val jobId = 12345val sql = s"select count(*) from profile.user_crowd_test where date = ${date} and job_id = ${jo原创 2022-03-04 21:41:59 · 3954 阅读 · 1 评论 -
hdfs 读写流程
读流程client 请求 namenode 读取文件 namenode 返回该文件对应的元数据信息, 包含 datanode 列表 client 请求每个 block 对应的 datanode 使用 FSDataInputStream 下载文件调用 close 关闭流写流程client 请求 namenode 写文件 namenode 返回允许写入 client 本地分好 block, 请求 namenode 写入第一个 blocknamenode 返回分配的 datanode 列表原创 2021-12-30 01:23:48 · 402 阅读 · 0 评论