如何创建一个带一个字符串返回多个字符串的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
-----------------------------------
使用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
我有一个具有以下模式的数据帧: 我想使用一个UDF,它将user_loans_arr和new_loan作为输入,并将new_loan结构添加到现有的user_loans_arr中。然后,从user_loans_arr中删除loan_date超过12个月的所有元素。 提前谢谢。
我用的是parse.com。每个包里面都有很多钻子,每个品类里面都有很多包。 我卡住了。然后(函数(result,result2,result3)在最后一行。promise可以有多个promise,它是可变的。有没有一种方法可以写出如下内容: 谢谢!