You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark 1.6.2中Timestamp列过滤无输出问题求助

解决Spark 1.6.2日期过滤无输出的问题

嘿,我来帮你排查下这个问题~先还原下你的需求和遇到的情况:

我需要过滤掉date_time_begin小于起始日期的行,尝试以下代码却未得到输出,使用的是Spark 1.6.2版本

filterddata = joindedf.filter(joindedf("date_time_begin").gt(lit("str_date")))
filterddata.show()

出现无输出的情况,大概率是过滤条件存在问题,结合Spark 1.6.2的特性,我整理了几个关键点和修复方案:

  • 检查变量引用是否正确
    你代码里写的lit("str_date")是把字符串字面量"str_date"传入,但我猜str_date应该是你定义的起始日期变量(比如类似str_date = "2024-01-01"),这时候不能加引号,要直接写lit(str_date),不然Spark会把"str_date"当成日期字符串去比较,自然匹配不到数据。

  • 确保日期类型一致
    Spark里日期类型(Date/Timestamp)和字符串直接比较容易出问题,建议先确认date_time_begin的字段类型:

    joindedf.printSchema()
    

    如果date_time_begin是Timestamp/Date类型,要把str_date转换成对应的类型再比较,比如用unix_timestamp(Spark 1.6版本的常用转换方式):

    from pyspark.sql.functions import unix_timestamp, lit
    
    # 假设str_date是"yyyy-MM-dd HH:mm:ss"格式的字符串
    start_ts = unix_timestamp(lit(str_date), "yyyy-MM-dd HH:mm:ss").cast("timestamp")
    filterddata = joindedf.filter(joindedf("date_time_begin") > start_ts)
    filterddata.show()
    

    如果date_time_begin是字符串类型,要确保它和str_date的格式完全一致(比如都是"yyyy-MM-dd")再做字符串比较,但这种方式不如转成日期类型可靠。

  • 排查空值问题
    可以先查看date_time_begin字段有没有空值,空值会导致过滤条件不匹配:

    joindedf.filter(joindedf("date_time_begin").isNull()).count()
    

    如果有空值,可以在过滤时加上非空判断:

    filterddata = joindedf.filter(joindedf("date_time_begin").isNotNull() & joindedf("date_time_begin").gt(lit(str_date)))
    

内容的提问来源于stack exchange,提问作者vijayaragavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:29:43