课程表

Apache Pig 基础

Apache Pig 诊断运算符

Apache Pig 分组和连接

Apache Pig 合并和拆分

Apache Pig 过滤

Apache Pig 排序

Pig Latin 内置函数

Apache Pig 其他执行模式

工具箱
速查手册

STRSPLITTOBAG()函数

当前位置:免费教程 » 大数据/云 » Apache Pig

此函数类似于 STRSPLIT() 函数。它使用给定的分隔符分隔字符串,并将结果返回到包中。

语法

STRSPLITTOBAG() 的语法如下。此函数接受需要拆分的字符串,正则表达式和指定限制的整数值(字符串应该拆分的子字符串数)。当遇到给定的正则表达式时,此函数解析字符串,它将该字符串拆分为 n 个子字符串,其中 n 将传递给limit

  1. grunt> STRSPLITTOBAG(string, regex, limit)

假设在 HDFS 目录 /pig_data/ 中有一个名为 emp.txt 的文件,如下所示。此文件包含员工详细信息,如id,姓名,年龄和城市。

emp.txt

  1. 001,Robin_Smith,22,newyork
  2. 002,BOB_Wilson,23,Kolkata
  3. 003,Maya_Reddy,23,Tokyo
  4. 004,Sara_Jain,25,London
  5. 005,David_Miller,23,Bhuwaneshwar
  6. 006,Maggy_Moore,22,Chennai
  7. 007,Robert_Scott,22,newyork
  8. 008,Syam_Ketavarapu,23,Kolkata
  9. 009,Mary_Carter,25,Tokyo
  10. 010,Saran_Naidu,25,London
  11. 011,Stacy_Green,25,Bhuwaneshwar
  12. 012,Kelly_Moore,22,Chennai

通过使用 emp_data 关系将此文件加载到Pig中,如下所示。

  1. grunt> emp_data = LOAD 'hdfs://localhost:9000/pig_data/emp.txt' USING PigStorage(',')
  2. as (id:int, name:chararray, age:int, city:chararray);

以下是 STRSPLITTOBAG() 函数的示例。如果你观察emp.txt文件,可以发现在 name 列中,我们有由分隔符"_"分隔的员工的姓名和姓氏。

在此示例中,我们尝试拆分员工的姓名和姓氏,并使用 STRSPLITTOBAG() 函数在包中获取结果。

  1. grunt> strsplittobag_data = FOREACH emp_data GENERATE (id,name), STRSPLITTOBAG (name,'_',2);

语句的结果将存储在名为 strsplittobag_data 的关系中。使用Dump运算符验证关系 strsplittobag_data 的内容,如下所示。

  1. grunt> Dump strsplittobag_data;
  2. ((1,Robin_Smith),{(Robin),(Smith)})
  3. ((2,BOB_Wilson),{(BOB),(Wilson)})
  4. ((3,Maya_Reddy),{(Maya),(Reddy)})
  5. ((4,Sara_Jain),{(Sara),(Jain)})
  6. ((5,David_Miller),{(David),(Miller)})
  7. ((6,Maggy_Moore),{(Maggy),(Moore)})
  8. ((7,Robert_Scott),{(Robert),(Scott)})
  9. ((8,Syam_Ketavarapu),{(Syam),(Ketavarapu)})
  10. ((9,Mary_Carter),{(Mary),(Carter)})
  11. ((10,Saran_Naidu),{(Saran),(Naidu)})
  12. ((11,Stacy_Green),{(Stacy),(Green)})
  13. ((12,Kelly_Moore),{(Kelly),(Moore)})
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号