我正试图过滤掉我的Spark DF,只在数字字段中显示文本值,因为数据是非结构化的。
不太确定如何在上面的场景中使用下面的代码:
sparkdf = sparkdf.filter(col("colToFilter") <evaluation>)
如果我在SQL中尝试类似的东西,我会执行以下操作:
SELECT * FROM tbl
WHERE col NOT LIKE '%[0-9]%'
我当前表格的一个示例如下:
|RefId|
|0|
|1|
|1|
|1|
|RefNum2|
|1|
我只想展示";RefNum2";作为输出。
如果有任何帮助,我将不胜感激。
谢谢。
最简单的请求:从tbl1中选择*,其中col regexp('[a-z]'(;
您可以使用rlike
过滤器,如下所示:
df.filter("RefId NOT RLIKE '^[0-9]+$'").show()
+-------+
| RefId|
+-------+
|RefNum2|
+-------+
或
import pyspark.sql.functions as F
df.filter(~F.col("RefId").rlike("^[0-9]+$")).show()
+-------+
| RefId|
+-------+
|RefNum2|
+-------+