Python 如何通过pyspark读取配置单元分区表
刚接触spark编程,对使用pyspark读取分区表的方法有疑问 假设我们有一个分区如下的表:Python 如何通过pyspark读取配置单元分区表,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,刚接触spark编程,对使用pyspark读取分区表的方法有疑问 假设我们有一个分区如下的表: ~/$table_name/category=$category/year=$year/month=$month/day=$day 现在,我想从所有类别中读取数据,但想按时间段限制数据。有没有办法用通配符来指定这一点,而不是写出所有单独的路径 大意是 table_path = ["~/$table_name/category=*/year=2019/month=03",
~/$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)
此外,还有一个更具python风格的方法来指定不同年份的时间范围,而不是单独列出路径
编辑:为了澄清一些事情,我没有访问此表的配置单元元存储的权限,因此无法仅通过SQL查询进行访问。此外,数据的大小不允许在转换到数据帧后进行过滤。您可以尝试此方法
通配符还可用于指定天数范围:
表_df_raw=spark.read
.选项(“基本路径”,“~/$table_name”)
.parquet(“~/$table_name/category=*/year=2019/month={3,4,8}”)
或
表_df_raw=spark.read
.选项(“基本路径”,“~/$table_name”)
.拼花地板(“~/$table_name/category=*/年=2019/月=[3-4]”)
您可以试试这个
通配符还可用于指定天数范围:
表_df_raw=spark.read
.选项(“基本路径”,“~/$table_name”)
.parquet(“~/$table_name/category=*/year=2019/month={3,4,8}”)
或
表_df_raw=spark.read
.选项(“基本路径”,“~/$table_name”)
.拼花地板(“~/$table_name/category=*/年=2019/月=[3-4]”)
您是否使用Hortonworks HDP群集?如果是,请尝试使用HiveWarehouse连接器。它允许Spark访问配置单元目录。在此之后,您可以对配置单元表执行任何Spark SQL命令:
如果您没有使用Hortonworks,我建议您查看以下链接:您使用的是Hortonworks HDP群集吗?如果是,请尝试使用HiveWarehouse连接器。它允许Spark访问配置单元目录。在此之后,您可以对配置单元表执行任何Spark SQL命令:
如果您不使用Hortonworks,我建议您查看以下链接:您说已经有一个分区表。.为什么不在作为数据帧读取的表上使用
select
和filter
等方法?您不必担心读取底层文件。更清楚的是,我没有访问此特定数据集的配置单元元存储的权限,加载整个表,然后应用过滤器将不可行,因为数据的大小。如果我遗漏了什么,请告诉我。你说已经有一个分区表。为什么不在作为数据帧读取的表上使用select
和filter
之类的方法呢?您不必担心读取底层文件。更清楚的是,我没有访问此特定数据集的配置单元元存储的权限,加载整个表,然后应用过滤器将不可行,因为数据的大小。如果我遗漏了什么,请告诉我。我提到我没有访问hive metastore的权限,因此无法编写plan ol'Sql。你的hive metastore怎么了?你没有权限访问它?关于您之前所说的,您需要在将数据转换为数据帧之前进行筛选?我提到我没有访问配置单元元存储的权限,因此无法编写计划ol'sql您的配置单元元存储发生了什么?你没有权限访问它?关于您之前所说的,您需要在将数据转换为数据帧之前进行过滤吗?