如何通过pyspark读取配置单元分区表

时间:2019-04-16 21:46:50

标签: python apache-spark pyspark

是火花编程的新手,并对使用pyspark读取分区表的方法有疑问。

让我们说我们有一个分区如下的表:

~/$table_name/category=$category/year=$year/month=$month/day=$day

现在,我想从所有类别中读取数据,但希望按时间段限制数据。有什么方法可以用通配符指定它,而不是写出所有单独的路径吗?

影响

table_path = ["~/$table_name/category=*/year=2019/month=03",
                         "~/$table_name/category=*/year=2019/month=04"]

table_df_raw = spark.read.option(
    "basePath", "~/$table_name").parquet(*table_path)

此外,由于奖金是一种更有效的方式来指定可能落在不同年份的时间范围,而不是单独列出路径。

编辑:为了澄清一些事情,我无权访问此表的配置单元元存储,因此无法仅通过SQL查询进行访问。另外,数据的大小不允许过滤转换后的数据框。

2 个答案:

答案 0 :(得分:0)

You can try this

Wildcards can also be used to specify a range of days:


table_df_raw = spark.read
                    .option("basePath", "~/$table_name")
                    .parquet("~/$table_name/category=*/year=2019/month={3,4,8}")

Or


table_df_raw = spark.read
                    .option("basePath", "~/$table_name")
                    .parquet("~/$table_name/category=*/year=2019/month=[3-4]")

答案 1 :(得分:0)

您是否正在使用Hortonworks HDP集群?如果是,请尝试使用HiveWarehouse连接器。它允许Spark访问Hive目录。之后,您可以对配置单元表执行任何Spark SQL命令:https://community.hortonworks.com/articles/223626/integrating-apache-hive-with-apache-spark-hive-war.html

如果您不使用Hortonworks,建议您查看以下链接:https://acadgild.com/blog/how-to-access-hive-tables-to-spark-sql