【问题标题】:pyspark reading parquet files partitioned data using Dynamic Date Rangespyspark 使用动态日期范围读取镶木地板文件分区数据
【发布时间】:2021-08-18 22:04:57
【问题描述】:

我的数据集如下:

year=yyyy
 |---month=mm
 |   |---day=dd
 |   |   |---<parquet-files>

我使用以下方法以静态方式处理今天和明天的数据:

   (year = year(current_date()) and month = month(current_date()) and day = 
   dayofmonth(current_date())) or 
   (year = year(date_sub(current_date(), 1)) and month = month(date_sub(current_date(), 1)) and 
   day = dayofmonth(date_sub(current_date(), 1)))

但是,我需要将日期范围从今天拉到 X 天。我已经尝试过(过滤器中的Dateiff,但这不适用于镶木地板文件)。

   DateDiff(current_date(),to_date(concat(year,'-',month,'-', day))) <= %s
   and
   DateDiff(current_date(),to_date(concat(year,'-',month,'-', day))) >= 0

我想知道这是否可能以及可能的解决方案是什么? 谢谢

【问题讨论】:

    标签: python pyspark parquet


    【解决方案1】:

    以下就可以了

    from datetime import date, timedelta
    
    X = 5
    today = date.today()
    dates = [today-timedelta(days=x) for x in range(X)]
    
    table_path = "hdfs:///path/to/parquet/table/year={year}/month={month}/day={day}/*"
    
    paths = [table_path.format(year=date.year, month=date.month, day=date.day) for date in dates]
    
    df = spark.read.format("parquet").load(paths)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-13
      • 2022-06-16
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 2021-03-19
      • 2018-02-12
      • 2020-03-14
      相关资源
      最近更新 更多