通常如果我们在一行中有任何分隔符。
load "pigtest.txt" using PigStorage(',') as (year:int,temp:float);
以下是单线数据的样本。
0029029070999991901010106004+64333+023450FM12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999
我需要提取年1901(16th position to 4positions)
t emperature(89th position to 4 positions)
,以便我可以定义我的键和值。
我还需要从温度中修剪初始零点。
提前致谢
答案 0 :(得分:1)
是的,您可以使用FixedWidthLoader
UDF从输入数据中提取特定位置。下载piggybank.jar
并尝试以下方法。
<强>输入强>
0029029070999991901010106004+64333+023450FM12+000599999V0202701N015919999999N0000001N9-00781+99999102001ADDGF108991999999999999999999
<强> PigScript:强>
REGISTER /tmp/piggybank.jar;
A = LOAD 'input' USING org.apache.pig.piggybank.storage.FixedWidthLoader('16-19,89-92') AS(year:int,temp:float);
DUMP A;
<强>输出:强>
(1901,781.0)
<强>参考:强>
http://pig.apache.org/docs/r0.13.0/api/org/apache/pig/piggybank/storage/FixedWidthLoader.html