
Spark/Hive
文章平均质量分 65
记录spark和hive学习点滴
有数的编程笔记
蓄势待发,待机而动
展开
-
自动类型转换导致join结果错误-问题记录
当表A或表B中存在id较长的值,在转换为double类型时会因精度原因改变原本的值,造成无法正确join的结果。因此当类型不同时建议手动在sql中显示将bigint类型转换成string类型,从而避免隐式类型产生意料之外的问题.假设在如下表A和B的join场景中id字段业务含义相同,但该字段在两个表中类型不同(A表中为bigint,B表中为String)。在底层执行join时,由于二者类型不同会自动将二者强转成double类型后在进行连接比较。原创 2024-07-10 21:07:33 · 400 阅读 · 0 评论 -
Hive/Spark窗口函数
结果中,对于每一行的last_value的结果都是当前值,并不分区中按salary升序的最后一个值。前面在提到last_value时,特意强调了该函数的结果并不是分区中的最后一个值,结合上述介绍的window specification再来看下该函数的结果值。注意,默认情况下last_value取的是第一行截止到当前行的最后一个值(当前行的值),并不是整个分区中排序后的最后一个值。注意,如果order by的结果相同,则rank得到的结果都相同,在这里的语义是排序结果相同,因此等级编号也相同。原创 2024-07-09 21:02:55 · 939 阅读 · 0 评论 -
Spark pivot数据透视详解
上述sql中根据subject和name进行旋转,并对score字段聚合计算,表中全部字段都参与了旋转和聚合,相当于是对全表进行分组。上述sql中指定按subject列进行旋转并对socre聚合,将按照原表中剩下的name字段进行分组。cube方法将得到字段全部组合结果进行分组分组,分别得到(A,B,C),(A,B),(A,C),(B,C),(A),(B),©以及全表的分组。rollup方法将按照从左到右的依次忽略最右侧字段结果进行分组,分别得到(A,B,C),(A,B),(A)以及全表的分组。原创 2024-04-24 20:12:39 · 877 阅读 · 0 评论 -
HiveSQL如何生成连续日期剖析
情景假设:有一结果表,表中有start_dt和end_dt两个字段,,想要根据开始和结束时间生成连续日期的多条数据,应该怎么做?直接上结果sql。(为了便于演示和测试这里通过模拟一个结果表数据)如果对涉及到的函数和语法不是特别了解,直接看到上述结果可能有点懵,接下来换个形式理解下,即如下sql如上sql结构比较简单,即t1表和t2表进行笛卡尔集,t1是原始表只有1行数据,但是结果是6行数据,因此关键点是t2的结果。原创 2024-04-07 09:42:12 · 1248 阅读 · 0 评论 -
Hive collect_list和concat_ws函数null值处理
collect_list和concat_ws函数null处理原创 2022-08-21 11:07:48 · 5202 阅读 · 0 评论 -
Hive分位数函数percentile和percentile_approx区别
分位数函数percentile和percentile_approx区别原创 2022-10-24 16:56:48 · 4515 阅读 · 0 评论 -
select字段列表中无法使用计算出来的值进行再次计算
select字段列计算出来的结果无法在当前列中再次使用,需要嵌套子查询才可以使用原创 2022-08-21 11:30:20 · 554 阅读 · 0 评论 -
HiveQL和SparkSQL中的正则
hive和spark中的正则原创 2022-10-24 16:54:29 · 5292 阅读 · 0 评论 -
Left join结果却是Inner join?(Spark/Hive)
join中on条件和where条件中区别、以及多个join的执行顺序原创 2022-08-21 11:21:12 · 4300 阅读 · 0 评论 -
基于MeteStore查看hive磁盘占用
文章目录1. 相关元数据表介绍2. 示例关于hive中Statistics特性请查看Statistics in Hive1. 相关元数据表介绍DBS 表用于存储hive数据库信息, 包含数据库名、文件系统路径等。通过DB_ID字段与其他表相关联。TBLS 表用于存储Hive表、视图、索引表的基本信息,包含表名、表类型(外部表等)、所属数据库id、创建时间等信息。该表中有全部hive表信息TABLE_PARAMS 表存储全部hive表的一些额外信息(表属性以及其他统计信息)。该表只有3个原创 2021-12-05 21:46:26 · 483 阅读 · 0 评论 -
spark-sql脚本-e和-f两种方式转义处理的区别
spark-sql脚本-e和-f两种方式转义处理的区别原创 2022-08-21 11:38:01 · 460 阅读 · 0 评论 -
Hive group by或partition by中null值处理
在group by或partition by中如果字段列中包含null,null会被正常分组。原创 2022-08-21 10:54:39 · 2117 阅读 · 0 评论 -
SUM(A)+SUM(B)和SUM(A+B)结果不同?
null值在聚合函数中的处理和影响原创 2021-12-14 13:32:42 · 2926 阅读 · 0 评论 -
SparkSession 相关类
文章目录1. SparkSession相关类1.1. DataType1.2. Metadata1.3. StructType与StructField1.3.1. StructField类定义1.3.2. StructType类定义1.4. 数据源DataSource1.4.1. DataSource详解1.4.2. DataSourceRegister详解1.5. 数据集合DataSet1.5.1. 属性和方法1.6. DataFrameReader详解1.6.1. 属性和方法1.7. SparkSess原创 2020-10-15 00:14:45 · 941 阅读 · 0 评论 -
Spark 配置
文章目录1. Spark 配置1.1. Spark 属性1.1.1. 动态加载Spark属性1.1.2. 查看Spark属性1.2. 环境变量1. Spark 配置Spark提供了三个位置来配置系统:Spark属性控制大多数应用程序参数,可以通过使用SparkConf对象、bin/spark-submit脚本选项、conf/Spark-default.conf文件或通过Java系统属性进行设置。环境变量可用于通过每个节点上的conf/spark-env.sh脚本设置每台机器的设置,例如IP地址。原创 2020-10-14 22:17:11 · 1302 阅读 · 0 评论 -
Spark 核心原理
文章目录1. Spark核心原理2. 消息通信原理2.1. Spark运行时消息通信1. Spark核心原理Application(应用程序):是指用户编写的spark应用程序,包含驱动程序(driver)和分布在集群中多个节点上运行的Executor代码,在执行过程中有一个或多个作业组成。Driver(驱动程序):Spark中的Driver,即运行上述Application的main函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运原创 2020-10-13 23:14:21 · 1973 阅读 · 1 评论 -
SparkSQL 的 Thrift JDBC 服务和 CLI 介绍
Spark SQL还可以使用JDBC/ODBC或命令行接口(CLI)作为分布式查询引擎。在这种模式下,终端用户或应用程序可以直接与Spark SQL交互来运行SQL查询,而不需要编写任何代码。运行Thrift JDBC/ODBC服务器这里实现的Thrift JDBC/ODBC服务器对应于hive 1.2.1中的HiveServer2。您可以使用Spark或Hive1.2.1附带的beeli...翻译 2019-09-03 22:08:53 · 503 阅读 · 0 评论 -
详解 Spark 的 Standalone 集群
在一台机器上本地运行是很容易的,只需要在系统路径上安装Java,或者JAVA_HOHE环境变量指向Java安装可以通过scala shell的修改版本以交互方式运行spark。这是学习框架的好方法。./bin/spark-shell --master local[2]--master选项指定分布式集群的主URL,或local以一个线程本地运行,或local[N]以n个线程本地运行。要...翻译 2019-11-15 00:41:23 · 901 阅读 · 1 评论 -
详解 Spark 的 Submitting Applications
Spark之Submitting ApplicationsSpark bin目录中的spark-submit脚本用于在集群上启动应用程序。它可以通过统一的接口使用所有Spark支持的集群管理器,因此不必专门为每个集群管理器配置应用程序。绑定应用程序的依赖项如果您的代码依赖于其他项目,则需要将它们与应用程序一起打包,以便将代码分发到Spark集群。为此,需要创建一个包含代码及其依赖项的装...翻译 2019-09-03 22:07:28 · 163 阅读 · 0 评论