通配符不在pyspark数据帧中工作

时间:2016-05-24 01:56:46

标签: apache-spark pyspark

当我执行以下代码片段时,df1显示无结果。当我用“1,2,3,...”代替野性字符“*”时,df1显示值。我错过了什么?

from __future__ import print_function
import sys
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import DataFrame
import pyspark.sql.functions
.
.
.
df1= df.filter(df.DATE == "*162014").filter(df.TMC == "111N04908")\
       .sort(df.EPOCH.asc())

2 个答案:

答案 0 :(得分:2)

只有==意味着它等于 - 仅此而已。它不使用通配符,正则表达式或SQL模式。如果您想使用模式,请使用LIKERLIKE

expr("DATE RLIKE '%162014'")
expr("DATE LIKE '*162014'")

答案 1 :(得分:1)

这应该有效

df1 = df.filter(df.DATE.rlike('*162014'))
        .filter(df.TMC == "111N04908")
        .sort(df.EPOCH.asc())

其中或过滤两者是相同的

df1 = df.where(df.DATE.rlike('*162014'))
        .where(df.TMC == "111N04908")
        .sort(df.EPOCH.asc())