【问题标题】:py4j.Py4JException: Method and([class java.lang.String]) does not existpy4j.Py4JException: 方法 and([class java.lang.String]) 不存在
【发布时间】:2023-02-01 02:09:17
【问题描述】:

我是具有以下架构的 spark 数据框。

-root
 |-- ME_KE: string (nullable = true)
 |-- CSPD_CAT: string (nullable = true)
 |-- EFF_DT: string (nullable = true)
 |-- TER_DT: string (nullable = true)
 |-- CREATE_DTM: string (nullable = true)
 |-- ELIG_IND: string (nullable = true)

基本上我试图直接在数据帧上将 spark SQL 代码转换为 SQL。

df=spark.read.format('csv').load(SourceFilesPath+"\\cutdetl.csv",infraSchema=True,header=True)
df.createOrReplaceTempView("cutdetl")

spark.sql(f"""select
              me_ke,
              eff_dt,
              ter_dt,
              create_dtm
              from
              cutdetl
              where
              (elig_ind = 'Y') and
              ((to_date({start_dt},'dd-mon-yyyy') between eff_dt and ter_dt) or
              (eff_dt between to_date({start_dt}'dd-mon-yyyy') and to_date({end_dt},'dd-mon-yyyy'))
""")

下面是我试过的代码。

df1=df.select("me_ke","eff_dt","ter_dt","elig_ind")
      .where(col("elig_ind")=="Y" & (F.to_date('31-SEP-2022', dd-mon-yyyy')
      .between(col("mepe_eff_dt"),col("mepe_term_dt"))) | 
      (F.to_date(col("eff_dt"))
      .between(F.to_date('31-DEC-2022'),F.to_date('31-DEC-2022'))))

我收到以下错误:

py4j.Py4JException: Method and([class java.lang.String]) does not exist``` 

Could anyone help with converting above code to dataframe level SQL

【问题讨论】:

    标签: python sql pyspark apache-spark-sql


    【解决方案1】:

    我会这样走

    from pyspark.sql.functions import col
    
    df=spark.read.format('csv').load(SourceFilesPath+"\cutdetl.csv",infraSchema=True,header=True)
    df.createOrReplaceTempView("cutdetl")
    
    df1 = df.filter(col("elig_ind") == "Y")
    df1 = df1.filter((col("eff_dt").between(f"to_date({start_dt},'dd-mon-yyyy')", f"to_date({end_dt},'dd-mon-yyyy')")) | 
                   (f"to_date({start_dt},'dd-mon-yyyy')".between(col("eff_dt"), col("ter_dt"))))
    df1 = df1.select("me_ke", "eff_dt", "ter_dt", "create_dtm")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 2019-05-25
      • 2017-04-12
      • 2019-09-24
      • 2019-04-26
      • 1970-01-01
      相关资源
      最近更新 更多