Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Pig脚本-将字符串转换为INT_Hadoop_Apache Pig - Fatal编程技术网

Hadoop Pig脚本-将字符串转换为INT

Hadoop Pig脚本-将字符串转换为INT,hadoop,apache-pig,Hadoop,Apache Pig,猪的初学者,需要帮助吗 对于所有非字母数字,将字符串强制转换为INT -在不单独传递每个字段名的情况下进行处理 样本数据- 00013425731998101620140402300032736901 00000000AAA001200X111685V00000000 00283335542006120920131010300030003105 00000000AAA001200X117407 00000000 00000000331998101620140402300033128107

猪的初学者,需要帮助吗

对于所有非字母数字,将字符串强制转换为INT -在不单独传递每个字段名的情况下进行处理

样本数据-

00013425731998101620140402300032736901  00000000AAA001200X111685V00000000
00283335542006120920131010300030003105  00000000AAA001200X117407 00000000
00000000331998101620140402300033128107  00000000AAA001200X111685 00000000
00003902331999090620140402300032545208  00000000AAA001200X111685 00000000
它是一个固定宽度的文件,映射细节如下-

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 

使用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,以字符串作为输入,进行拆分,并返回一个包或元组。

感谢您的响应,但我希望在不传递每个字段名称的详细信息的情况下处理它,因为有50多个字段。你能为所有非字母数字faik引导类似-转换为INT的东西吗?Pig中没有内置的东西可以做到这一点,除了正则表达式。