hadoop pig - 用逗号加载浮动
hadoop pig - loading float with commas
我有一个 csv 文件,其中包含用逗号而不是点编码的浮点数。
我制作了一个 pig 加载脚本来精确确定 float 类型,但是当读取逗号时,pig 无法将其转换为 float(他希望 float 有点)。
如何在加载阶段通过点更改逗号?
我知道 UDF 可以解决问题,但还有另一种更简单的方法吗?
谢谢。
好的,用一些简单的数据来测试这个只是为了好玩:
1,2;2,3;4,5
5,6;6,7;7,8
猪脚本:
data = load 'commatest.csv' using PigStorage(';') as (f1:chararray, f2:chararray, f3:chararray);
replaced = foreach data generate REPLACE(f1, ',', '.') as f1dot, REPLACE(f2, ',', '.') as f2dot, REPLACE(f3, ',', '.') as f3dot;
fdata = foreach replaced generate (float)f1dot as f1, (float)f2dot as f2, (float)f3dot as f3;
dump fdata;
输出:
(1.2,2.3,4.5)
(5.6,6.7,7.8)
测试是否真的转为float:
test = foreach fdata generate f1*f2*f3;
dump test;
输出:
(12.42)
(292.65598)
我有一个 csv 文件,其中包含用逗号而不是点编码的浮点数。 我制作了一个 pig 加载脚本来精确确定 float 类型,但是当读取逗号时,pig 无法将其转换为 float(他希望 float 有点)。
如何在加载阶段通过点更改逗号? 我知道 UDF 可以解决问题,但还有另一种更简单的方法吗?
谢谢。
好的,用一些简单的数据来测试这个只是为了好玩:
1,2;2,3;4,5
5,6;6,7;7,8
猪脚本:
data = load 'commatest.csv' using PigStorage(';') as (f1:chararray, f2:chararray, f3:chararray);
replaced = foreach data generate REPLACE(f1, ',', '.') as f1dot, REPLACE(f2, ',', '.') as f2dot, REPLACE(f3, ',', '.') as f3dot;
fdata = foreach replaced generate (float)f1dot as f1, (float)f2dot as f2, (float)f3dot as f3;
dump fdata;
输出:
(1.2,2.3,4.5)
(5.6,6.7,7.8)
测试是否真的转为float:
test = foreach fdata generate f1*f2*f3;
dump test;
输出:
(12.42)
(292.65598)