大数据学习(109)-Impala 和 Hive 之间的 SQL 差异
🍋🍋大数据学习🍋🍋
🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞
Impala 的 SQL 语法遵循 SQL-92 标准,并在内置函数等领域包含许多行业扩展。有关将 SQL 代码从各种数据库系统调整到 Impala 的一般讨论,请参阅将 SQL 从其他数据库系统移植到 Impala。
由于 Impala 和 Hive 共享同一个元存储数据库,并且它们的表经常互换使用,因此以下部分详细介绍了 Impala 和 Hive 之间的差异。
阅读全文:
- HiveQL 功能在 Impala 中不可用
- Impala 和 HiveQL 功能之间的语义差异
一、HiveQL 功能在 Impala 中不可用
Impala 的当前版本不支持您可能熟悉的 HiveQL 中的以下 SQL 功能:
- 扩展性机制,例如 TRANSFORM 、自定义文件格式或自定义 SerDes。
- DATE 数据类型。
- BINARY 数据类型。
- XML 函数。
- HiveQL 中的某些聚合函数: covar_pop , , covar_samp , corr percentile percentile_approx histogram_numeric collect_set ;Impala 支持 Impala 聚合函数中列出的聚合函数集和 Impala 分析函数中列出的分析函数。
- 采样。
- 侧视图。在 CDH 5.5 / Impala 2.3 及更高版本中,Impala 支持使用联接表示法而不是 EXPLODE() 关键字对复杂类型( STRUCT 、 ARRAY 或 MAP )进行查询。看 复杂类型(仅限 CDH 5.5 或更高版本), 了解有关 Impala 对复杂类型支持的详细信息。
-
Impala 支持用 C++ 编写的高性能 UDF,以及重用一些基于 Java 的 Hive UDF。
-
Impala 支持标量 UDF 和用户定义的聚合函数 (UDAF)。Impala 目前不支持用户定义的表生成函数 (UDTF)。
-
基于 Java 的 UDF 仅支持 Impala 支持的列类型。
-
不能通过 Impala 从 Java UDF 调用 Hive current_user() 函数。
Impala 目前不支持以下 HiveQL 语句:
- ANALYZE TABLE (Impala 等价物是 COMPUTE STATS )
- DESCRIBE COLUMN
- DESCRIBE DATABASE
- EXPORT TABLE
- IMPORT TABLE
- SHOW TABLE EXTENDED
- SHOW TBLPROPERTIES
- SHOW INDEXES
- SHOW COLUMNS
- INSERT OVERWRITE DIRECTORY ;use INSERT OVERWRITE table_name 或 CREATE TABLE AS SELECT 将查询结果具体化到与 Impala 表关联的 HDFS 目录中。
Impala 仅遵循 TEXT 表的 serialization.null.format table 属性,而忽略 Parquet 和其他格式的属性。Hive 遵循 serialization.null.format 属性,并在扫描期间将匹配值转换为 NULL。请参阅 Text Tables 的数据文件 以在 Impala 中使用 table 属性。
二、Impala 和 HiveQL 功能之间的语义差异
本节介绍的实例 Impala 和 Hive 具有相似的功能,有时包含相同的语法,但这些功能的运行时语义存在差异。
安全:
Impala 利用 Apache Sentry 授权框架,该框架提供基于角色的精细访问控制,以保护数据免受未经授权的访问或篡改。
CDH 5.1 及更高版本中包含的 Hive 组件现在包括支持 GRANT Sentry 的 、 REVOKE 和 CREATE/DROP ROLE 语句。早期的 Hive 版本具有一个特权系统,其中包含 GRANT 主要用于防止意外删除数据的 and REVOKE 语句,而不是防止恶意用户的安全机制。
Impala 可以使用通过 Hive GRANT 和 REVOKE 语句设置的权限。Impala 在 Impala 2.0 及更高版本中有自己的 GRANT and REVOKE 语句。有关 Impala 中授权的详细信息,包括如何使用存储在元存储数据库中的权限从原始基于策略文件的权限模型切换到 Sentry 服务,请参阅为 Impala 启用 Sentry 授权 。
SQL 语句和子句:
Impala SQL 语句的语义与 HiveQL 不同,在某些情况下,它们使用类似的 SQL 语句和子句名称:
- Impala 对查询提示使用不同的语法和名称, [SHUFFLE] 而不是 [NOSHUFFLE] MapJoin or StreamJoin 。有关 Impala 的详细信息,请参阅 Joins in Impala SELECT Statements。
- Impala 不会公开 SORT BY 、 或 DISTRIBUTE BY 的 MapReduce 特定功能 CLUSTER BY 。
- Impala 不要求查询包含 FROM 子句。
数据类型:
- Impala 支持一组有限的隐式强制转换。这有助于避免意外的强制转换行为导致意外的结果。
- Impala 不会在字符串和数字或布尔类型之间隐式转换。始终用于 CAST() 这些转换。
- Impala 在从较小或不太精确的类型转换为更大或更精确的类型时,会在数字类型之间执行隐式转换。例如, Impala 会将 a SMALLINT 隐式转换为 a BIGINT 或 FLOAT ,但要将 a DOUBLE 转换为 或 FLOAT INT to TINYINT ,需要在查询中调用 to CAST() 。
- Impala 确实执行了从 string 到 timestamp 的隐式转换。Impala 的 TIMESTAMP 数据类型有一组受限的文本格式,而 from_unixtime() format string;有关详细信息,请参阅 TIMESTAMP 数据类型 。
请参阅数据类型下的主题,了解有关每种数据类型的隐式和显式强制转换的完整详细信息,以及 Impala 类型转换函数 ,了解有关该 CAST() 函数的详细信息。
- Impala 不会使用本地时区存储或解释时间戳,以避免意外的时区问题带来意外结果。时间戳是相对于 UTC 存储和解释的。对于 Impala 和 Hive 之间对名称相似的日期/时间函数的某些调用,这种差异可能会产生不同的结果。有关 Impala 函数的详细信息,请参阅 Impala 日期和时间函数 。有关 Impala 如何处理时区的讨论,以及在处理 Parquet 编码时可用于使 Impala 更紧密地匹配 Hive 行为的配置选项,请参阅 TIMESTAMP 数据类型 TIMESTAMP 数据,或者在本地时区和 UTC 之间进行转换时。
- Impala TIMESTAMP 类型可以表示从 1400-01-01 到 9999-12-31 的日期。这与 Hive 日期范围不同,后者是 0000-01-01 到 9999-12-31。
-
Impala 不会将列溢出作为 NULL 返回,以便客户可以区分 NULL 数据和溢出情况,就像使用传统数据库系统一样。Impala 返回类型范围内的最大值或最小值。例如, tinyint 范围从 -128 到 127 的有效值。在 Impala 中,值为 -200 的 a tinyint 返回 -128 而不是 NULL 。一个 tinyint 值为 200 时,将返回 127。
其他功能:
- Impala 不提供虚拟列。
- Impala 不会公开锁定。
- Impala 不会公开某些配置属性。
相关文章:
大数据学习(109)-Impala 和 Hive 之间的 SQL 差异
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
STM32F103_HAL库+寄存器学习笔记19 - CAN发送中断+CAN接收中断+接收所有CAN报文+ringbuffer数据结构
导言 完成本章节的学习后,CAN驱动代码已经具备实战项目的大部分功能,完全可以在工作上使用: CAN发送有串行与中断方式,且三个发送邮箱都使用了;CAN接收用FIFO1的三个邮箱与高效的数据结构ringbuffer。另外,还有接收FI…...
【 Git 全局忽略文件完全指南:配置、规则与最佳实践】
Git 全局忽略文件完全指南:配置、规则与最佳实践 前言 在软件开发过程中,我们经常遇到一些不需要被版本控制系统追踪的文件,例如IDE配置文件、编译生成的中间文件、日志文件等。虽然可以在每个项目中创建.gitignore文件,但对于开…...
RabbitMQ常见面试题回答重点
文章目录 什么是消息队列?为什么需要消息队列消息队列的模型消息队列常见名词如何保证消息不丢失?(可靠性)如何保证消息不重复/业务幂等性如何保证消息有序性如何处理消息堆积消息队列设计为推送还是拉取 / 推拉模式优点无法路由的…...
一文详解opencv-python环境搭建:Mac配置python的cv2开发环境
在计算机视觉领域,OpenCV 作为跨平台的计算机视觉和机器学习软件库,凭借其丰富的功能和稳定的性能,已成为开发者的重要工具之一。而 Python 语言因其简洁的语法和强大的科学计算生态,成为许多开发者调用 OpenCV 功能的首选语言组合…...
Unity打开项目时目标平台被改变
2021年1月20日18:20:32 现象: 我的项目已经是切换到目标平台为Android的项目,每天工作过程中会多次打开关闭该项目,但是总有偶然的几率,会出现打开项目以后,目标平台自动被切换为Windows,然后就开始忙碌于…...
Python 写一个带参数的EXE函数
Python写一个带参数的函数,压成EXE import argparse import time import sysdef main():# 创建参数解析器parser argparse.ArgumentParser(description"命令行参数示例程序")# 添加指定的参数parser.add_argument("-subitem", typestr, requi…...
4月21日星期一今日早报简报微语报早读
4月21日星期一,农历三月廿四,早报#微语早读。 1、女子伸腿阻止列车关门等待同行人员,被深圳铁路警方行政拘留; 2、北理工再通报:开除宫某党籍,免去行政职务,解除聘用关系; 3、澳门…...
2025年最新服务器、中间件安全(面试题)
活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!…...
《FDTD Solutions仿真全面教程:超构表面与光束操控的前沿探索》
FDTD基础入门FDTD基础入门 1、FDTD Solutions 求解物理问题的方法 1.1 FDTD与麦克斯韦方程 1.2 FDTD中的网格化 2、FDTD Solutions 特点与应用 3、FDTD功能与使用主窗口——CAD人机交互界面 计算机辅助设计(CAD)模拟编辑器:主标题栏、工具条、实体对象树…...
AI时代,是该切换到Cursor编辑器了
Cursor 使用指南:从入门到高效编程 一、Cursor 简介 Cursor 是一款基于人工智能技术的先进代码编辑器,它致力于为开发者打造更高效、智能的编程环境。通过集成前沿的自然语言处理(NLP)和代码生成技术,Cursor 能够精准…...
在 UE5 编辑器中,由于游戏设置 -> EV100 设置,点击播放前后的光照不同。如何保持点击播放前后的光照一致?
In Unreal Engine 5 (UE5), discrepancies in lighting between the editor and play modes are often due to auto exposure settings, particularly when using the EV100 system. To maintain consistent lighting across both modes, follow these steps:YouTube1Epic …...
【Linux网络编程十】网络原理之IP协议【网络层】
网络原理之IP协议【网络层】 1.理解IP协议2.IP报文2.1分片问题 3.路由器3.1路由问题 4.网络划分5.私有ip与公有ip6.理解运营商与全球网络7.NAT技术7.1NAPT 1.理解IP协议 IP协议的本质工作:提供一种能将数据跨网络从A主机送到B主机的能力。 而用户需要的是能够可靠的…...
C++23 让 Lambda 表达式中的 () 更可选:P1102R2 提案深度解析
文章目录 一、背景与动机:Lambda 表达式中的痛点1.1 问题的根源 二、P1102R2 提案:让 () 可选2.1 提案的核心内容2.2 语法调整的细节2.3 提案的合理性 三、编译器支持:主流编译器的跟进四、对 C 编程的影响:简化语法与提升一致性4…...
国产AI新突破!全球首款无限时长电影生成模型SkyReels-V2开源:AI视频进入长镜头时代!
在 AI 技术日新月异的今天,我们再次见证了历史性的突破。 昆仑万维 SkyReels 团队于近日正式发布了全球首款支持无限时长的电影生成模型——SkyReels-V2,并免费开源。这无疑为 AI 视频领域掀开了崭新的一页,标志着 AI 视频正式迈入长镜头时代…...
如何以特殊工艺攻克超薄电路板制造难题?
一、超薄PCB的行业定义与核心挑战 超薄PCB通常指厚度低于1.0毫米的电路板,而高端产品可进一步压缩至0.4毫米甚至0.2毫米以下。这类电路板因体积小、重量轻、热传导性能优异,被广泛应用于折叠屏手机、智能穿戴设备、医疗植入器械及新能源汽车等领域。然而…...
VScode-py环境
settings.json {"git.ignoreLimitWarning": true,"code-runner.runInTerminal": true,"code-runner.executorMap": {"python": "python3"} } 第二句话保证在终端里面进行IO 第三句话保证python3的用户不会执行python关键…...
4.21 从0开始配置spark-local模式
首先准备好安装包 然后使用命令解压 使用source /etc/profile命令让环境变量生效 输入命令 spark-submit --class org.apache.spark.examples.SparkPi --master local[2] /opt/module/spark-local/examples/jars/spark-examples_2.12-3.1.1.jar 10 即在spark运行了第一个程序…...
git详解
目录 常用命令速查 一、Git 的概念与作用 二、Git 仓库(Repository) 1. 本地仓库 2. 远程仓库 三、Git 的三个核心区域 1. 工作区(Working Directory) 2. 暂存区(Staging Area / Index) 3. 版本库…...
I/O复用函数的使用——select
I/O复用函数的使用——select 目录 一、概念 二、select接口 2.1 基础概念 2.2 使用 select 函数的标准输入读取代码 2.3 基于 select 模型的多客户端 TCP 服务器实现 一、概念 i/o复用使得程序能同时监听多个文件描述符,可以提高程序性能。 之前为了让服务器能…...
LangChain与图数据库Neo4j LLMGraphTransformer融合:医疗辅助诊断、金融风控领域垂直领域、法律咨询场景问答系统的技术实践
LangChain与图数据库融合:垂直领域问答系统的技术实践 一、技术背景与核心价值 在垂直领域(如金融、医疗、法律)的问答场景中,传统RAG系统常面临实体关系推理不足和专业术语理解偏差的痛点。LangChain通过集成图数据库与知识图谱…...
Trae国际版的下载与简单使用示例(免费使用Claude,GPT4.1等多个高级模型)
文章目录 Trae的下载与使用什么是Trae重要亮点Trae的核心功能主要特点 安装指南下载步骤系统要求安装步骤 基础操作代码补全代码生成代码解释 高级功能自定义设置 总结参考资料 Trae的下载与使用 什么是Trae Trae是一款先进的AI编程助手工具,专为开发者打造。它集…...
Python 金融量化分析
文章目录 1. IPython:交互式的 Python 命令行安装常用操作IPython Notebook 2. NumPy:数据计算模块主要功能安装与导入创建 ndarrayndarray 的常用属性示例代码常用创建函数示例代码 3. NumPy 索引和切片数组运算数组索引和切片布尔型索引花式索引通用函…...
Linux:进程:进程控制
进程创建 在Linux中我们使用fork函数创建新进程: fork函数 fork函数是Linux中的一个系统调用,用于创建一个新的进程,创建的新进程是原来进程的子进程 返回值:如果子进程创建失败,返回值是-1。如果子进程创建成功&a…...
量子计算在金融领域的应用与展望
在当今数字化时代,金融行业正面临着前所未有的技术变革。量子计算作为前沿科技领域的明珠,正在逐渐从实验室走向实际应用,为金融行业带来新的机遇和挑战。本文将探讨量子计算在金融领域的应用现状、优势以及未来的发展展望。 一、量子计算简介…...
StarRocks:一款开源的高性能分析型数据仓库
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO(基于成本优化)、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。 StarRocks 是一个 Linux 基金会开源项目,采用 Apache 2.0 许…...
NLP高频面试题(四十九)大模型RAG常见面试题解析
为什么要构建RAG系统? RAG系统通过结合信息检索和生成模型,解决了LLM在知识更新、幻觉和上下文限制等方面的挑战。它允许模型在生成响应前引用外部知识库,提高答案的准确性和相关性。 RAG与大模型微调的区别? 项目RAG系统大模型微调知识更新通过更新外部知识库实现需要重…...
【NLP 68、R-BERT】
为什么划掉你的名字,为什么不敢与你对视 —— 25.4.21 一、R-BERT:基于BERT的关系抽取模型 R-BERT(Relation BERT)是一种用于关系抽取(Relation Extraction)任务的模型,它结合了预训练语言模型…...
Java:多线程
多线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 并发和并行 并发:在同一时刻,有多个指令在单个CPU上交替执行 并行:在同一时刻,有多个指令在多个CPU上同时执行 …...
第一章:自然语言处理
目录 1.1 自然语言处理发展史 1.2 统计语言模型发展史 统计语言模型 NNLM 模型 Word2Vec 模型 ELMo 模型 BERT 模型 大语言模型 1.3 小结 自然语言处理(Natural Language Processing,NLP)是一门借助计算机技术研究人类语言的科学。虽…...
Git 大文件使用 Git-LFS 管理,推送失败
配置了.gitattributes文件后, *.jar filterlfs difflfs mergelfs -text *.so filterlfs difflfs mergelfs -text *.aar filterlfs difflfs mergelfs -text *.bin filterlfs difflfs mergelfs -text *.a filterlfs difflfs mergelfs -text 仍然推送失败 POST git-…...
[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
RK3588上编译opencv 及基于c++实现图像的读入
参考博文: https://blog.csdn.net/qq_47432746/article/details/147203889 一、安装依赖包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…...
C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
Java 设计模式心法之第3篇 - 总纲:三大流派与导航地图
前两章,我们修炼了 SOLID 这套强大的“内功心法”,为构建高质量软件打下了坚实根基。现在,是时候鸟瞰整个设计模式的“武林”了!本文将为您展开一幅由 GoF 四人帮精心绘制的 23 种经典设计模式的“全景导航地图”。我们将探索这些…...
高级java每日一道面试题-2025年4月19日-微服务篇[Nacos篇]-Nacos未来的发展方向和规划有哪些?
如果有遗漏,评论区告诉我进行补充 面试官: Nacos未来的发展方向和规划有哪些? 我回答: Nacos 作为阿里巴巴开源的服务发现、配置管理和服务治理平台,其未来的发展方向和规划主要体现在以下几个关键领域: 1. 安全性与标准化 API分类精细化…...
跳过reCAPTCHA验证的技术解析与优化实践
Google的reCAPTCHA验证系统已成为保护网站安全的核心工具之一。然而,频繁的验证弹窗可能降低用户体验,甚至导致用户流失。如何在遵守平台规则的前提下,通过技术优化与用户行为管理减少验证触发率,成为我们亟需解决的难题。 但需要…...
idea使用docker插件一键部署项目
一、首先保证我们电脑上已经安装了docker docker -v查看docker版本,如果不能识别,需要先下载docker destop,在官网下载正常安装即可。 安装成功就可以使用docker 命令了 二、idea下载docker插件并配置docker参数 我是通过tcp连接docker服务…...
强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分)
强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分) 一、马尔可夫决策过程二、Q表格三、免模型预测1. 蒙特卡洛策略评估1) 动态规划方法和蒙特卡洛方法的差异 2. 时序差分2.1 时序差分误差2.2 时序差分方法的推广 3. 自举与采样…...
[SpringMVC]请求响应参数传递
controller前置url解决业务重名 在项目中,常常会碰到不同的业务之间的某个方法同名的情况。例如在一个文档管理系统(有着文档和发布者两个实体)中,两个实体都有着 "add" 业务。如果两个实体相关的业务url都用 "/ad…...
在C++业务类和QML之间创建一个数据桥梁
工作中经常会遇到两种业务直接按无法直接沟通,此时需要建立一个桥梁将两者进行联系起来,假设一个C业务类,有一个QML UI, 如果将BridgeClass 类通过qmlRegisterType 注册到QML中,在C中如何能够调用到BridgeClass 对象吗…...
超详细mac上用nvm安装node环境,配置npm
一、安装NVM 打开终端,运行以下命令来安装NVM: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash 然后就会出现如下代码: > Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zprofile, ~/.…...
MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用
CoreMark 1.0 介绍 CoreMark 是由 EEMBC(Embedded Microprocessor Benchmark Consortium)组织于 2009 年推出的一款用于衡量嵌入式系统 CPU 或 MCU 性能的标准基准测试工具。它旨在替代陈旧的 Dhrystone 标准(Dhrystone 容易受到各种libc不同…...
YOLO11改进 | 特征融合Neck篇之Lowlevel Feature Alignment机制:多尺度检测的革新性突破
## 为什么需要重新设计特征融合机制? 在目标检测领域,YOLO系列模型因其高效的实时性成为工业界和学术界的标杆。然而,随着应用场景的复杂化(如自动驾驶中的多尺度目标、无人机图像中的小物体检测),传统特征融合策略的局限性逐渐暴露:**特征对齐不足导致语义信息错位、多…...
解决方案:远程shell连不上Ubuntu服务器
服务器是可以通过VNC登录,排除了是服务器本身故障 检查服务是否在全网卡监听 sudo ss -tlnp | grep sshd确保有一行类似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回无结果,表明系统里并没有任…...
Flutter路由模块化管理方案
总结记录一下Flutter路由模块管理: 1、创建路由基类 abstract class BaseRouteConfig {Map<String, WidgetBuilder> get routes; } 2、创建不同模块的路由配置类 // 认证模块路由 class AuthRoutes extends BaseRouteConfig {overrideMap<String, Widg…...
Java BIO、NIO、AIO、Netty面试题(已整理全套PDF版本)
什么是IO Java中的I/O(输入/输出)机制基于流(Stream)的概念实现数据的传输。流将数据序列化,即按照特定顺序逐次进行读写操作。简而言之,Java程序通过I/O流与外部设备进行数据交换。 Java类库中的I/O功能十…...
TapData × 梦加速计划 | 与 AI 共舞,TapData 携 AI Ready 实时数据平台亮相加速营,企业数据基础设施现代化
在实时跃动的数据节拍中,TapData 与 AI 共舞,踏出智能未来的新一步。 4月10日,由前海产业发展集团、深圳市前海梦工场、斑马星球科创加速平台等联合发起的「梦加速计划下一位独角兽营」正式启航。 本次加速营以“打造下一位独角兽企业”为目…...
一键部署k8s之EFK日志收集系统
一、部署es 1.下载安装 #下载安装 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-linux-x86_64.tar.gz #解压 [rootes software]# tar xf elasticsearch-8.13.2-linux-x86_64.tar.gz #创建运行elasticsearch服务用户并修改权限 [rootes softw…...
Python常用的第三方模块【openpyxl库】读写Excel文件
openpyxl库模块是用于处理Microsoft Excel文件的第三方库,可以对Excel文件中的数据进行写入和读取。 weather.pyimport reimport requests#定义函数 def get_html():urlhttps://www.weather.com.cn/weather1d/101210101.shtml #爬虫打开浏览器上的网页resprequests.…...