Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件的示例分析
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家介绍Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先说一下,这里解决的问题应
千家信息网最后更新 2026年10月31日Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件的示例分析首先说一下,这里解决的问题应用场景: sparksql处理Hive表数据时,判断加载的是否是分区表,以及分区表的字段有哪些?再进一步限制查询分区表必须指定分区? 这里涉及到两种情况:select SQL查询和加载Hive表路径的方式。这里仅就"加载Hive表路径的方式"解析分区表字段,在处理时出现的一些问题及解决作出详细说明。 如果大家有类似的需求,建议通过解析Spark SQL logical plan和下面说的这种方式解决方案结合,封装成一个通用的工具。 如, hive_path的几种指定方式会导致这种情况的发生(test_partition是一个Hive外部分区表,dt是它的分区字段,分区数据有dt为20200101和20200102): 1.hive_path 为"/spark/dw/test.db/test_partition/dt=20200101" 2.hive_path为"/spark/dw/test.db/test_partition/*" 我这里主要给出几个源码段,结合上述xmind图理解:
1.hive_path为/spark/dw/test.db/test_partition/dt=20200101 2.hive_path为/spark/dw/test.db/test_partition/*
这两种情况导致源码if(basePaths.contains(currentPath))为true,还没有解析分区就重置变量finished为true跳出循环,因此最终生成的结果也就没有分区字段: sparkSession.read.option("basePath","/spark/dw/test.db/test_partition") 2.主要重写basePaths方法和parsePartition方法中的处理逻辑,同时需要修改其他涉及的代码。由于涉及需要改写的代码比较多,可以封装成工具
这篇文章给大家介绍Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
问题现象
sparksql加载指定Hive分区表路径,生成的DataSet没有分区字段。
sparkSession.read.format("parquet").load(s"${hive_path}"),hive_path为Hive分区表在HDFS上的存储路径。
因为牵涉到的源码比较多,这里仅以示例的程序中涉及到的源码中的class、object和方法,绘制成xmind图如下,想细心研究的可以参考该图到spark源码中进行分析。
问题分析
在没有指定参数basePath的情况下:
sparksql底层处理后得到的basePaths: Set(new Path("/spark/dw/test.db/test_partition/dt=20200101"))【伪代码】
leafDirs: Seq(new Path("/spark/dw/test.db/test_partition/dt=20200101"))【伪代码】sparksql底层处理后得到的basePaths: Set(new Path("/spark/dw/test.db/test_partition/dt=20200101"),new Path("/spark/dw/test.db/test_partition/dt=20200102"))【伪代码】
leafDirs: Seq(new Path("/spark/dw/test.db/test_partition/dt=20200101"),new Path("/spark/dw/test.db/test_partition/dt=20200102"))【伪代码】解决方案(亲测有效)
1.在Spark SQL加载Hive表数据路径时,指定参数basePath,如
关于Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
字段
分区表
查询
代码
源码
路径
处理
分析
情况
方式
问题
示例
数据
方法
条件
格式
内容
参数
工具
底层
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
亿人帮互联网科技有限公司
圆梦互联网科技
疫情对互联网科技公司影响
互联网巨头科技公司
科技服务与互联网
上海万想互联网科技
左右互联网络科技
互联网科技生活的内容
太原新华互联网科技学校怎么样
上海电发互联网科技有限公司
栖莱科技互联网股份有限公司
厦门比较好的科技互联网公司
注册互联网科技公司经营范围大全
风投北京互联网科技
广州互联网高科技取餐柜
同城互联网络科技
北京品多多互联网科技有限公司
银川新华互联网科技学校招聘
每日互联网科技新闻
互联网和科技创新
深圳互联网络科技有限公司
奇酷互联网络科技公司
北京禾田雨橡互联网科技
左右互联网络科技
海南科技产业互联网平台
千方科技属于互联网企业吗
下一代互联网重大应用科技园
中国科技和美国互联网
陕西彩京云互联网科技有限公司