在 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 分区表的主要内容,如果未能解决你的问题,请参考以下文章