【说好的情怀呢】

友情提示:
抄本篇文章答案之前,请务必提前下载好 
反诈APP

 

多年情怀粉,今日粉转黑....

问题:

Q1: 将附件中 ip_china.csv.zip文件加载为 Hive 内部表,保持格式与 csv header一致,表需要开启压缩
Q2: 将附件中 login_data.csv.zip文件加载为 Hive 外部表,保持格式与csv header一致,表需要开启压缩,需要按日分区
Q3: 通过Q1,Q2加载的数据,将用户登陆表中的ip转化为对应的国家地区并落表(避免笛卡尔积)
Q4: 请输出每个分区下,每个province的去重登陆人数。输出结构为 pt,province,cnt_login
Q5: 请输出总量数据下,存在登陆数据的各个province中,登陆时间最早的前3人及对应的登陆时间,若不满3人,需要留空。输出结构为 province,account_id_1, login_time_1, account_id_2, login_time_2, account_id_3, login_time_3


 

q1.sql 


CREATE TABLE ip_txt (
`ip_start` string
,`ip_end` string
,`long_ip_start` string
,`long_ip_end` string
,`country` string
,`province` string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;LOAD DATA LOCAL INPATH '/root/ip_china.csv' INTO TABLE ip_txt;CREATE TABLE IF NOT EXISTS `ip_orc`(`ip_start` string,`ip_end` string,`long_ip_start` string,`long_ip_end` string,`country` string,`province` string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ','STORED AS ORCTBLPROPERTIES ('orc.compress'='SNAPPY');INSERT INTO TABLE ip_orc SELECT ip_start ,ip_end ,long_ip_start,long_ip_end,country,province FROM ip_txt where  ip_start != "ip_start"

q2.sql

CREATE TABLE login_txt (
logtime string
,account_id string
,ip string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;LOAD DATA LOCAL INPATH '/root/login_data.csv' INTO TABLE login_txt;CREATE EXTERNAL TABLE IF NOT EXISTS `login_orc`(
logtime string
,account_id string
,ip string
)
PARTITIONED BY (`ds` string )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC
TBLPROPERTIES ('orc.compress'='SNAPPY'
);SET hive.exec.dynamic.partition=true;           
SET hive.exec.dynamic.partition.mode=nonstric;      INSERT INTO TABLE login_orc PARTITION(ds) SELECT logtime ,account_id ,ip,substr(logtime,0,10) as  ds FROM login_txt  where  logtime != "logtime"

q3.sql

create table if not exists user_info as
WITH ip_tmp AS(SELECTt1.*,cast(split(t1.ip, "\\.")[0] as bigint)*256*256*256+ cast(split(t1.ip, "\\.")[1] as bigint)*256*256+ cast(split(t1.ip,"\\.")[2] as bigint)*256+ cast(split(t1.ip,"\\.")[3] as bigint) AS ip_long
FROM login_orc  t1
)
SELECT 
ip_tmp.account_id
,ip_tmp.ip_long
,t2.province
,ip_tmp.logtime
,ip_tmp.ds
FROM ip_tmp 
LEFT JOIN ip_orc t2
WHERE
ip_tmp.ip_long >= t2.long_ip_start and ip_tmp.ip_long <= t2.long_ip_end
;select * from user_info limit 10;

q3.png

q4.sql

SELECT  
ds as pt 
,province
,count(distinct account_id) as cnt_login
FROM user_info
GROUP BY ds,province
ORDER BY ds,cnt_login;

q4.png

q5.sql

WITH grouped_data AS (SELECTprovince,concat_ws(',', collect_list(concat(account_id, ',', logtime))) AS merged_valuesFROM (select province ,account_id,logtime, row_number() over(partition by province order by logtime) as rid from user_info   ) t where t.rid <=3GROUP BY province)
SELECTprovince,split(merged_values,',')[0] as account_id_1,split(merged_values,',')[1] as login_time_1,split(merged_values,',')[2] as account_id_2,split(merged_values,',')[3] as login_time_2,split(merged_values,',')[4] as account_id_3,split(merged_values,',')[5] as login_time_3
FROMgrouped_data
where (LENGTH(merged_values) - LENGTH(REPLACE(merged_values, ',', ''))) = 5
union all
select province
,"" as account_id_1 
,"" as login_time_1
,"" as account_id_2
,"" as login_time_2
,"" as account_id_3
,"" as login_time_3 
from grouped_data where  (LENGTH(merged_values) - LENGTH(REPLACE(merged_values, ',', ''))) < 5

q5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s系列之十四安装Istio

Istio 是一个开源的服务网格&#xff08;Service Mesh&#xff09;&#xff0c;用于连接、管理和保护微服务。它提供了一组功能强大的工具&#xff0c;包括流量管理、安全性、监控和跟踪等&#xff0c;以帮助在微服务架构中更好地管理服务之间的通信。 一些主要的 Istio 功能包…

浅谈业务逻辑漏洞

1.业务逻辑漏洞&#xff1a;业务逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。 逻辑漏洞的破坏方式并非是向程序添加破坏内容,而是利用逻辑处理不严密或代码问题或固有不足…

ubuntu内存不足,用Swap扩展增加虚拟内存

Linux增大Swap分区&#xff0c;可以增加虚拟内存&#xff0c;以解决电脑卡机&#xff0c;内存不足等问题 top可以查看cpu的使用情况 lscpu可以查看本机配置的cpu硬件情况 查看内存使用情况 free -h (下面显示"交换"或者Swap等字样说明系统已经启动了Swap&#xff…

GUROBI案例实战(六)——排产排程问题(2)

更多可参考&#xff1a;https://github.com/Gurobi/modeling-examples/blob/master/food_manufacturing/food_manufacture_1.ipynb 一、问题简介 (1) 某厂商生产一种香皂的原材料有植物油脂和非植物油脂&#xff0c;其中植物油脂有两种&#xff0c;非植物油脂有三种&#xff…

【Java - 框架 - SpringMVC】(01) SpringMVC框架的简单创建与使用,快速上手

"SpringMVC"框架的简单创建与使用&#xff0c;快速上手&#xff1b; 环境 Java版本"1.8.0_202"&#xff1b;Spring Boot版本"2.5.9"&#xff1b;Windows 11 专业版_22621.2428&#xff1b;IntelliJ IDEA 2021.1.3(Ultimate Edition)&#xff1…

Protobuf 的介绍与使用(入门级)

背景 在移动互联网时代&#xff0c;手机流量、电量是最为有限的资源&#xff0c;而移动端的即时通讯应用无疑必须得直面这两点。 解决流量过大的基本方法就是使用高度压缩的通信协议&#xff0c;而数据压缩后流量减小带来的自然结果也就是省电&#xff1a;因为大数据量的传输必…

提升效率!商务电子邮件在WorkPlace中如何高效运用?安全保障!

高效和安全的沟通是任何组织成功的核心。在我们关于电子邮件类型的系列文章的第二期中&#xff0c;我们将重点关注商业电子邮件在促进无缝交互中的关键作用。当你身处重要的工作场环境时&#xff0c;本系列的每篇文章都提供了电子邮件的不同维度的视角。 “2024年&#xff0c;全…

算法系列--递归

一.如何理解递归 递归对于初学者来说是一个非常抽象的概念,笔者在第一次学习时也是迷迷糊糊的(二叉树遍历),递归的代码看起来非常的简洁,优美,但是如何想出来递归的思路或者为什么能用递归这是初学者很难分析出来的 笔者在学习的过程中通过刷题,也总结出自己的一些经验,总结来…

C语言例3-39:赋值时类型转换可能出现错误的例子

进行数据类型转换时&#xff0c;需要注意以下几点&#xff1a; 强制类型转换获得的是一个所需类型的中间量&#xff0c;原来表达式的类型并不发生变化。例如(double)a只是将变量a的值转换成一个double型的中间量&#xff0c;但其数据类型并未转换为double型表达式计算过程中&a…

Java开发---上海得帆(一面)

面试感受 这是我的第一次面试&#xff0c;我感觉我这次面试的很差&#xff0c;很糟糕&#xff0c;十分的糟糕&#xff0c;万分的糟糕。第一次面试&#xff0c;面试了半个小时。我去真的好紧张&#xff0c;脑子里一篇空白。脑子空白还不是最惨的&#xff0c;最惨的是那个八股文…

游戏客户端开发

1、LOL里面用到的是什么同步机制&#xff1f; 2、网络不好的情况下人物会出现瞬移等情况&#xff0c;怎样避免&#xff1f; 3、游戏里面有没有涉及数据存储&#xff0c;如存档之类的&#xff1f;、 4、如果让你设计存档&#xff0c;会如何着手&#xff1f; 5、以二进制方式…

反光衣AI检测识别算法---豌豆云

工服反光衣穿戴AI检测识别算法是一项基于人工智能视觉智能分析的创新技术。 它通过使用现场摄像头对工地进行全天候、不间断的监测&#xff0c;旨在提高工地安全管理水平。 这个系统的核心功能是自动检测和识别潜在的危险行为&#xff0c;例如未穿戴工服、反光衣、安全带或未…

聊一聊基础

基础 1、面向对象编程是什么&#xff1f; 面向对象编程在解决问题的时候&#xff0c;会先抽象出对象&#xff0c;再使用对象去解决问题。 面向过程把解决问题的过程拆成一个个方法&#xff0c;通过一个个方法的执行解决问题。 面向对象编程有三大特性&#xff0c;继承、封装…

containerd管理命令ctr常用操作 —— 筑梦之路

Containerd ctr、crictl、nerdctl客户端命令——筑梦之路_crictl login-CSDN博客 镜像常用操作 1. 拉取镜像 ctr images pull docker.io/library/nginx:alpine 注意&#xff1a;containerd支持oci标准的镜像&#xff0c;所以可以直接使用docker官方或dockerfile构建的镜像 需…

RabbitMQ--04--Spring Cloud Stream(消息驱动)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.Spring Cloud Stream1. 基本介绍https://spring.io/projects/spring-cloud-stream#overview 2.Spring Cloud Stream 解决的痛点问题3.设计思想Stream为什么可以统…

2024网络安全-自学笔记

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

新火种AI|国产手机抢滩“AI+折叠屏”赛道,行业洗牌大战就此开启?

作者&#xff1a;小岩 编辑&#xff1a;彩云 从2023年到2024年&#xff0c;随着新一波人工智能浪潮的加速&#xff0c;消费电子产品也迎来了全新的话题——AI。更重要的是&#xff0c;这场战争看似没有硝烟&#xff0c;但各大厂商都已经暗自角力了许久&#xff0c;特别是手机…

Java二阶知识点总结(八)Linux和Docker

Linux 1、常用命令&#xff1a; cat&#xff1a;查看文件内容cd&#xff1a;切换目录ifconfig或ip addr&#xff1a;用于查看网络接口的地址和参数pwd&#xff1a;显示当前目录的绝对路径ls/ll&#xff1a;查看当前目录下的所有文件touch&#xff1a;创建文件mkdir&#xff1…

Windows 11 鼠标右键可选择 cmd 命令行选项

** Windows 11 鼠标右键可选择 cmd 命令行选项 ** 在文件夹内打开命令行&#xff0c;只能使用 Windows 自带的 PowerShell &#xff0c; 作为一个 cmd 重度使用用户来说很是折磨&#xff0c;需要打开 cmd 然后切换盘符再 cd 。。。 现在咱们自己创建一个可以打开 cmd 的方法…

Qt调用内置图标

int IconIndex0; QIcon icon QApplication::style()->standardIcon((QStyle::StandardPixmap)IconIndex);按以上代码可以调用Qt内置的71个图标&#xff0c;只要变换IconIndex就可以了&#xff0c;IconIndex为[0,70]。显示如下&#xff1a;图标index名称。