【问题标题】:Convert chararray to float将 chararray 转换为浮点数
【发布时间】:2022-01-16 07:30:05
【问题描述】:

我是猪编程的新手。我有一个 txt 文件和逗号 (,) 作为分隔符。在金额列中,即; amt_IN 和 amy_OUT 是 chararray 类型,数据分别为 $830.03 和 $1392.54。 我需要 INR 中的这两列。我先从字符串中删除 $ 符号,然后尝试将其转换为浮点数。

以下是txt文件-petrol.csv

Z7O 7C2,reliance,$830.03,$1392.54,1067,722,1625
T6Q 0L9,hindustan,$994.57,$11765.97,1039,805,1626
S1J 8B8,Bharat,$881.25,$10345.43,1066,657,1627

我使用以下代码删除了 $ 符号。

A = LOAD 'project/petrol.txt' USING PigStorage(',') as (distributer_id:chararray,distributer_name:chararray,amt_IN:chararray,amy_OUT:chararray,vol_IN:int,vol_OUT:int,year:int);
DUMP A;

(Z7O 7C2,reliance,$830.03,$1392.54,1067,722,1625)
(T6Q 0L9,hindustan,$994.57,$11765.97,1039,805,1626)
(S1J 8B8,Bharat,$881.25,$10345.43,1066,657,1627)
X = FOREACH A GENERATE distributer_id,distributer_name,SUBSTRING(amt_IN,1),SUBSTRING(amy_OUT,1),vol_IN,vol_OUT,year;
DUMP X;

(Z7O 7C2,reliance,830.03,1392.54,1067,722,1625)
(T6Q 0L9,hindustan,994.57,11765.97,1039,805,1626)
(S1J 8B8,Bharat,881.25,10345.43,1066,657,1627)

我需要将 amt_IN 和 amy_OUT 转换为浮动,以便我可以将美元金额转换为 INR。

提前感谢您的帮助。

【问题讨论】:

    标签: type-conversion apache-pig


    【解决方案1】:

    在 Pig 中,您可以通过在变量前面使用 (type) 来转换数据类型。如果using Pig 0.17,也可以使用AS var_name:type

    由于您可能没有使用 Pig 0.17,我预计第一种方法最有可能奏效。

    X = FOREACH A GENERATE 
        distributer_id,
        distributer_name,
        (float) SUBSTRING(amt_IN,1),
        (float) SUBSTRING(amy_OUT,1),
        vol_IN,
        vol_OUT,
        year;
    

    【讨论】:

      猜你喜欢
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2011-02-28
      • 2020-08-25
      • 2020-05-14
      相关资源
      最近更新 更多