pig脚本-将字符串转换为int

zrfyljdw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(378)

初学者在Pig,需要帮助吗
对于所有非字母数字,将字符串强制转换为int-to-to-to-handled,而不单独传递每个字段名。
样本数据-

00013425731998101620140402300032736901  00000000AAA001200X111685V00000000
00283335542006120920131010300030003105  00000000AAA001200X117407 00000000
00000000331998101620140402300033128107  00000000AAA001200X111685 00000000
00003902331999090620140402300032545208  00000000AAA001200X111685 00000000

它是一个固定宽度的文件,Map细节如下-

orderNumber 1   9   
origin      10  10      
Startdate   11  18  
ModDate     19  26  
Identifier  27  36      
Code        37  38  
CodeType    39  40      
Number      41  48  
Num         49  114
q0qdq0h2

q0qdq0h21#

可以使用substr提取零件,然后对其进行强制转换,也可以使用regexp。例如,对于前两个字段:

input = load ... as (line:chararray);
a = foreach input generate SUBSTRING(line, 0, 9) as orderNumber:long, SUBSTRING(line, 9, 10) as origin:chararray;

这样,您应该能够将输入行的每个部分转换为所需的组件。
或者,您可以编写一个udf,将字符串作为输入,进行拆分并返回一个包或元组。

相关问题