You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Apache Pig中将字符串按斜杠拆分并换行输出的问题

Pig处理斜杠分隔字符串拆分换行问题

需求与问题

需要将数据集中用斜杠(/)连接的字符串拆分后,每行输出一个带括号的元素:

  • 输入示例:
(David Jones / John Smith)
  • 期望输出:
(David Jones)
(John Smith)

当前使用的代码:

A = FOREACH data GENERATE FLATTEN(STRSPLIT(name,'/',2));
DUMP A;

终端输出结果不符合预期,得到的是:

(David Jones, John Smith)

解决方案

问题在于原代码仅拆分并展开了字符串,但没有对每个拆分后的元素单独包裹括号,且分隔符未匹配原字符串中的空格。调整后的代码如下:

-- 拆分字符串为数组,注意分隔符包含前后空格
split_data = FOREACH data GENERATE STRSPLIT(name, ' / ', 2) AS split_names;
-- 遍历数组元素,给每个元素添加括号并展开
result = FOREACH split_data GENERATE FLATTEN(
    TRANSFORM(split_names, name_part)
    GENERATE CONCAT('(', TRIM(name_part), ')')
);
DUMP result;

代码说明

  1. STRSPLIT(name, ' / ', 2):使用包含空格的分隔符' / '拆分,避免拆分后的元素带多余空格;2表示最多拆分成2个元素。
  2. TRANSFORM(split_names, name_part):遍历拆分得到的数组,对每个元素执行处理。
  3. CONCAT('(', TRIM(name_part), ')'):给每个元素前后添加括号,TRIM确保去除元素可能残留的空格。
  4. FLATTEN:将数组展开为多行,实现每行输出一个结果。

内容的提问来源于stack exchange,提问作者wasif ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:50:34