我需要创建一个PySpark脚本,在其他条件和过滤器中,查询给定的表以查找给定日期之后或其他日期之后的行。这就是我的代码看起来的样子:
#imports
from pyspark.sql import HiveContext
from pyspark.sql.functions import col, concat_ws, collect_list
from datetime import date
...
hive_context = HiveContext(sc)
today = str(date.today())
date_filter_condition = (col("created") >= today) | (col("updated") >= today)
lookup = hive_context.table("MY_TABLE").filter(col("status") == 1 & date_filter_condition)
上面的代码抛出一个错误:
调用o365.and时出错。Trace:异常:方法和([class java.lang. lib])不存在于py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)在py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)在py4j.Gateway.invoke(Gateway.java:274)在py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)在py4j.commands.CallCommand.execute(CallCommand.java:79)在py4j.GatewayConnection.run(GatewayConnection.java:238)在java.lang.Thread.run(Thread.java:748)
如果我删除包含日期过滤器(“& date_filter_condition”)的部分,脚本就可以正常工作。如何使用pySpark正确过滤日期?我使用的日期格式为YYYY-MM-DD。
1条答案
按热度按时间vddsk6oq1#
尝试将实际条件放在过滤器函数中,而不是将其分配给变量。
参考here。