在 pyspark 中过滤 Hive 分区表

Posted

技术标签:

【中文标题】在 pyspark 中过滤 Hive 分区表【英文标题】:Filtering Hive partition table in pyspark 【发布时间】:2018-10-09 12:47:23 【问题描述】:

我有一个在许多国家/地区分区的配置单元表。我想将特定的分区数据加载到我的dataframe中,如下图:

df=spark.read.orc("/apps/hive/warehouse/emp.db/partition_load_table").where('country="NCL"' && 'county="RUS"')

虽然我能够为单个分区加载,但它给了我一个错误。

下面是我在hdfs中的目录结构

/apps/hive/warehouse/emp.db/partition_load_table/country=NCL

df=spark.read.orc("/apps/hive/warehouse/emp.db/partition_load_table").where('country="NCL"')

【问题讨论】:

【参考方案1】:

不知道为什么不直接使用 HQLContext 查询配置单元表:

spark.sql("select * from partition_load_table where country in ('NCL', 'RUS')")

如果由于某种原因不可用,您可以合并底层配置单元分区。 首先将它们作为单独的数据框和联合读取。比如:

rus = spark.read.orc("/apps/hive/warehouse/emp.db/partition_load_table/country=rus") ncl = spark.read.orc("/apps/hive/warehouse/emp.db/partition_load_table/country=ncl") df = rus.union(ncl)

【讨论】:

以上是关于在 pyspark 中过滤 Hive 分区表的主要内容,如果未能解决你的问题,请参考以下文章

带有 hive 的 pyspark - 无法正确创建分区并从数据框中保存表

将 PySpark 数据帧写入分区 Hive 表

Spark-sql读取hive分区表限制分区过滤条件及限制分区数量

如何在pyspark Hive SQL中获取等效的postgres命令'nth_value'以进行分区?

手动选择镶木地板分区与在 pyspark 中过滤它们

使用 pyspark 插入镶木地板文件时,Hive 表需要对每个新分区进行“修复”