在pyspark中过滤Hive分区表

时间:2018-10-09 12:47:23

标签: apache-spark hive pyspark

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

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 个答案:

答案 0 :(得分: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)