当前位置: 首页 > 知识库问答 >
问题:

配置UDF以返回多个colunm输出

百里疏珂
2023-03-14

如何创建一个带一个字符串返回多个字符串的UDF?到目前为止,我所看到的UDF只能给出一个输出。如何从一个UDF中获得多个FEILD作为输出?

最简单的方法是实现name->FirstName,lastname。不是寻找拆分名称的替代解决方案,而是寻找有助于实现此类需求的API/UDF。

假设nameSplitteris是我的UDF

    ****Input****
------------------------
    Age | Name
------------------------
    24  | John Smit
    13  | Sheldon Cooper
-------------------------
    ****Out put ****
-----------------------------------
    Age | First Name  | Last Name
-----------------------------------
    24  | John        | Smit
    13  | Sheldon     | Cooper
-----------------------------------

共有1个答案

督灿
2023-03-14

使用split()函数,它将regexp模式周围的strinng拆分并返回一个数组:

select age, 
       NameSplitted[0] as FirstName,
       NameSplitted[1] as LastName
  from  
    (
    select age, 
           split(Name,' +') as NameSplitted 
     from myTable
    )s;

或者只需从MyTable中选择年龄,拆分(名称,'+')[0]名,拆分(名称,'+')[0]名;

模式'+'表示一个或多个空格。

hive> select regexp_extract('Johannes Chrysostomus Wolfgangus Theophilus Mozart', '^(.*?)(?: +)(.*)$', 1);
OK
Johannes
Time taken: 1.144 seconds, Fetched: 1 row(s)
hive> select regexp_extract('Johannes Chrysostomus Wolfgangus Theophilus Mozart', '^(.*?)(?: +)(.*)$', 2);
OK
Chrysostomus Wolfgangus Theophilus Mozart
Time taken: 0.692 seconds, Fetched: 1 row(s)
 类似资料:
  • 火花UDF是否可能返回多个值?如果是这样,如何在数据框架API中访问各个项目。

  • 我使用的是sparkSql 1.6.2(Java API),我必须处理下面的DataFrame,其中包含两列中的值列表: 所需的表为: 我想我必须使用爆炸函数和自定义UDF函数的组合。 null register(“combineUDF”,combineUDF,retSchema); 任何帮助都将非常感谢。 更新:我试图首先实现zip(AttributeName,AttributeValue),所

  • 我有一个PySpark Dataframe,它有两列(,,其类型为),其值为或。我正在尝试添加一个新列,这是这两个列的总和。我遵循Pyspark中的示例:在UDF中传递多列 这显示了一系列的< code>NULL,而不是我期望的结果。 我尝试了以下任何一种方法,以查看数据类型是否存在问题 仍然得到空值。 我试着移除阵列: 这可以正常工作并显示 我试着移除UDF,但是离开了阵列: 这可以正常工作并显

  • (编辑)更改了字段名称(从foo、bar……改为name和city),因为旧的名称令人困惑 我需要在多个UDF中使用单个函数,并根据输入返回不同的结构。 我的实现的这个简化版本基本上完成了我正在寻找的内容: (编辑)输出: 但是,返回StructType的ArrayType的代码不幸失败: 错误消息是: ValueError:结构类型的意外元组“名称” (编辑)所需输出为: 但是,其他类型(Str

  • 我用的是parse.com。每个包里面都有很多钻子,每个品类里面都有很多包。 我卡住了。然后(函数(result,result2,result3)在最后一行。promise可以有多个promise,它是可变的。有没有一种方法可以写出如下内容: 谢谢!

  • 我有一个具有以下模式的数据帧: 我想使用一个UDF,它将user_loans_arr和new_loan作为输入,并将new_loan结构添加到现有的user_loans_arr中。然后,从user_loans_arr中删除loan_date超过12个月的所有元素。 提前谢谢。