Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过pyspark读取配置单元分区表_Python_Apache Spark_Pyspark - Fatal编程技术网

Python 如何通过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",

刚接触spark编程,对使用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)
此外,还有一个更具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您的配置单元元存储发生了什么?你没有权限访问它?关于您之前所说的,您需要在将数据转换为数据帧之前进行过滤吗?