在 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 - 无法正确创建分区并从数据框中保存表
Spark-sql读取hive分区表限制分区过滤条件及限制分区数量