在 PIG 中处理货币价值 - pigstorage
Posted
技术标签:
【中文标题】在 PIG 中处理货币价值 - pigstorage【英文标题】:Dealing with currency values in PIG - pigstorage 【发布时间】:2016-06-16 13:30:56 【问题描述】:我在 HDFS 中加载了 2 列 CSV 文件。第 1 列是型号名称,第 2 列是以美元为单位的价格。 Example - Model: IE33, Price: $52678.00
当我运行以下脚本时,价格值都返回为两位数的结果示例 $52。
ultraPrice = LOAD '/user/maria_dev/UltrasoundPrice.csv' USING PigStorage(',') AS (
Model, Price);
dump ultraPrice;
我所有的价值都在 20000 美元到 60000 美元之间。不知道为什么会被截断。
如果我更改 CSV 文件并从价格值中删除 $ 一切正常,但我知道必须有更好的方法。
【问题讨论】:
【参考方案1】:请注意,在您的加载语句中,您没有指定数据类型。默认情况下,模型和价格将是 bytearray 类型,因此存在差异。
您可以从 csv 文件中删除 $ 或将数据加载为 chararray 并替换 $ 符号并将其转换为浮点数。
A = LOAD '/user/maria_dev/UltrasoundPrice.csv' USING TextLoader() as (line:chararray);
A1 = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z0-9.,\\s]+)','');
B = FOREACH A1 GENERATE FLATTEN(STRSPLIT($0,','));
B1 = FOREACH B GENERATE $0 as Model,(float)$1 as Price;
DUMP B1;
【讨论】:
以上是关于在 PIG 中处理货币价值 - pigstorage的主要内容,如果未能解决你的问题,请参考以下文章