Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache pig 无法将清管器中的字符数组转换为十进制_Apache Pig - Fatal编程技术网

Apache pig 无法将清管器中的字符数组转换为十进制

Apache pig 无法将清管器中的字符数组转换为十进制,apache-pig,Apache Pig,嗨,我是猪编程新手。我有一个csv文件和一个制表符作为分隔符。在我的价格栏中,我有拉克和克罗尔。它看起来像是40.85 Lacs,36.73 Lacs,2.01 cr。我想像这样转换成十进制 40.85 Lacs - 40,85,000 36.73 Lacs - 36,73,000 2.01 cr - 2,01,00000 我尝试了以下代码: a = LOAD '/user/user1/input/city/cityname.CSV' using PigStorage('|') as (Sou

嗨,我是猪编程新手。我有一个csv文件和一个制表符作为分隔符。在我的价格栏中,我有拉克和克罗尔。它看起来像是
40.85 Lacs
36.73 Lacs
2.01 cr
。我想像这样转换成十进制

40.85 Lacs - 40,85,000
36.73 Lacs - 36,73,000
2.01 cr - 2,01,00000
我尝试了以下代码:

a = LOAD '/user/user1/input/city/cityname.CSV' using PigStorage('|') as (SourceWebSite:chararray,PropertyID:chararray,ListedOn:chararray,ContactName:chararray,TotalViews:int,Price:chararray,PriceperArea:chararray,NoOfBedRooms:int,NoOfBathRooms:int,FloorNoOfProperty:chararray,TotalFloors:int,Possession:chararray,BuiltUpArea:chararray,Furnished:chararray,Ownership:chararray,NewResale:chararray,Facing:chararray,title:chararray,PropertyAddress:chararray,NearByFacilities:chararray,PropertyFeatures:chararray,Sellerinfo:chararray,Description:chararray);
DUMP a;
b = FOREACH a GENERATE Price;
dump b;
c = FILTER b BY (Price matches '.*Lacs.*');
d = FOREACH c GENERATE Price * 10000.0,SUBSTRING(Price,00000);
d = foreach c generate Price,TOKENIZE(REPLACE(Price,'.','')) AS e;

我为此奋斗了两天。任何帮助都会被赏识。

< P>使用<代码> ReExxIsPix< /Cord>获取值的第一部分,直到空白,将其转换为BigDigMall,然后将其相乘。使用此输入数据,例如:

(40.85 Lacs,1)
(36.73 Lacs,2)
(2.01 cr,3)
以下代码将起作用:

A = load 'data' using PigStorage(';');
B = foreach A generate (bigdecimal)REGEX_EXTRACT($0, '(.*) (.*)', 1) * 1000000;
dump B;
其结果是:

(40850000.00)
(36730000.00)
(2010000.00)

如果您展示您尝试过的内容,可能会向我们展示一些代码,其中不起作用,可能会显示一条错误消息,那么您将有更好的机会得到一个好答案,…-)你不能将一个字符(价格)与一个数字相乘。首先将其转换为数字数据类型(long或int)。谢谢。是否可以删除dotSure,将其转换为long或int。