相关疑难解决方法(0)

PySpark中的列过滤

我有一个df从Hive表加载的数据帧,它有一个时间戳列,比如说ts,字符串类型为格式dd-MMM-yy hh.mm.ss.MS a(转换为python datetime库,这是%d-%b-%y %I.%M.%S.%f %p).

现在我想过滤数据帧中过去五分钟的行:

only_last_5_minutes = df.filter(
    datetime.strptime(df.ts, '%d-%b-%y %I.%M.%S.%f %p') > datetime.now() - timedelta(minutes=5)
)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,我收到此消息

TypeError: strptime() argument 1 must be string, not Column
Run Code Online (Sandbox Code Playgroud)

看起来我有错误的列操作应用程序,在我看来,我必须创建一个lambda函数来过滤满足所需条件的每一列,但特别是Python和lambda表达式的新手,我不知道如何创建我的过滤器正确.请指教.

PS我更喜欢将我的过滤器表示为Python本机(或SparkSQL)而不是Hive sql查询表达式'WHERE'中的过滤器.

首选:

df = sqlContext.sql("SELECT * FROM my_table")
df.filter( // filter here)
Run Code Online (Sandbox Code Playgroud)

不是首选的:

df = sqlContext.sql("SELECT * FROM my_table WHERE...")
Run Code Online (Sandbox Code Playgroud)

python lambda apache-spark apache-spark-sql pyspark

6
推荐指数
1
解决办法
3万
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

lambda ×1

pyspark ×1

python ×1