df有一个字符串列,如“100256437”。我想多加一列来检查它是否会通过Luhn。如果是真的,那就是假的。
def Mod10(c: Column): Column = {
var (odd, sum) = (true, 0)
for (int <- c.reverse.map { _.toString.toShort }) {
println(int)
if (odd) sum += int
else sum += (int * 2 % 10) + (int / 5)
odd = !odd
}
lit(sum % 10 === 0)
}
错误代码:
error: value reverse is not a member of org.apache.spark.sql.Column
for (int <- c.reverse.map { _.toString.toShort }) {
^
error: value === is not a member of Int
lit(sum % 10 === 0)
^
2条答案
按热度按时间j7dteeu81#
看起来,你正在处理Spark Dataframes。
假设你有一个
现在,您可以将此Luhn测试实现为一个UDF,
它可以用作,
vlju58qv2#
**Spark 3.5+**有
luhn_check
完整示例: