Apache Spark 将列值提取为整数

ocebsuys  于 2023-08-06  发布在  Apache
关注(0)|答案(1)|浏览(120)

我有一个看起来像这样的函数:

static Column getFormattedData(Column name, Column surname) {
        return concat(
                lit("NAME_")
                lpad(name,  greatest(length(name), lit(8)), "0"),
                lpad(surname, greatest(length(surname), lit(8)), "0"));
    }

字符串
lpad()步骤有问题,其中greatest()返回一个Column,而lpad()期望第二个参数是Integer
有没有办法将列的值提取为整数形式?
或者,是否有更好的方法来格式化这两列/它们的值?
编辑:按要求输入样本:
例如name: Joesurname: Thomas
输出:NAME_00000JOE_00THOMAS
(both名和姓填充为8个字符)
例如name: Leonardosurname: DaCaprio
输出:NAME_LEONARDO_DaCaprio
(both姓名>= 8个字母,因此不需要填充)。

0sgqnhkj

0sgqnhkj1#

请检查下面的代码

scala> df.show(false)
+--------+--------+
|name    |surname |
+--------+--------+
|Joe     |Thomas  |
|Leonardo|DaCaprio|
+--------+--------+

scala> :paste
// Entering paste mode (ctrl-D to finish)

df
.select(
    concat(
        lit("NAME_"),
        lpad(upper($"name"), 8, "0"),
        lit("_"),
        lpad(upper($"surname"), 8, "0")
    ).as("output")
)
.show(false)

// Exiting paste mode, now interpreting.

+----------------------+
|output                |
+----------------------+
|NAME_00000JOE_00THOMAS|
|NAME_LEONARDO_DACAPRIO|
+----------------------+

字符串

相关问题