猪初学者,需要帮助
对于所有NON - AlphaNumeric,将STRING转换为INT - 在不单独传递每个字段名称的情况下进行处理。
示例数据 -
00013425731998101620140402300032736901 00000000AAA001200X111685V00000000
00283335542006120920131010300030003105 00000000AAA001200X117407 00000000
00000000331998101620140402300033128107 00000000AAA001200X111685 00000000
00003902331999090620140402300032545208 00000000AAA001200X111685 00000000
它是一个fixedwidth文件,映射细节如下 -
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
答案 0 :(得分:0)
使用substr提取部件然后投射它们或使用正则表达式。例如,对于前两个字段:
input = load ... as (line:chararray);
a = foreach input generate SUBSTRING(line, 0, 9) as orderNumber:long, SUBSTRING(line, 9, 10) as origin:chararray;
这样您就可以将输入行的每个部分转换为所需的组件。
或者你可以编写一个UDF,它接受一个字符串作为输入并进行拆分并返回一个包或元组。