【问题标题】:Dealing with currency values in PIG - pigstorage在 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 文件并从价格值中删除 $ 一切正常,但我知道必须有更好的方法。

【问题讨论】:

    标签: csv hadoop apache-pig


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多