gpt4 book ai didi

java - 使用 Spark Java API 2.2 使用列不是数字的地方过滤数据集?

转载 作者:可可西里 更新时间:2023-11-01 16:28:16 26 4
gpt4 key购买 nike

我是 Spark Java API 的新手。我想过滤列不是数字的数据集。我的数据集 ds1 是这样的。

+---------+------------+
| account| amount |
+---------+------------+
| aaaaaa | |
| aaaaaa | |
| bbbbbb | |
| 123333 | |
| 555555 | |
| 666666 | |

我想像这样返回一个数据集 ds2:

+---------+------------+
| account| amount |
+---------+------------+
| 123333 | |
| 555555 | |
| 666666 | |

我试过了,但 id 对我不起作用。

 ds2=ds1.select("account"). where(dsFec.col("account").isNaN());

有人可以用示例 spark 表达式来指导我解决这个问题。

最佳答案

你可以定义一个udf函数来检查account列中的字符串是否为数字

    UDF1 checkNumeric = new UDF1<String, Boolean>() {
public Boolean call(final String account) throws Exception {
return StringUtils.isNumeric(account);
}
};

sqlContext.udf().register("numeric", checkNumeric, DataTypes.BooleanType);

然后使用callUDF函数调用udf函数作为

    df.filter(callUDF("numeric", col("account"))).show();

应该给你

+-------+------+
|account|amount|
+-------+------+
| 123333| |
| 555555| |
| 666666| |
+-------+------+

关于java - 使用 Spark Java API 2.2 使用列不是数字的地方过滤数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50609219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com