Csv 清管器十进制值不工作
我正在cloudera学习PIG语言,我对十进制值有一些问题。 我有一个csv文件,其中有很多不同类型的数据。 我有一个名为“汽油平均值”的数据列,其值类似于“578524512” 我想从我的CSV文件加载此数据 我的剧本是:Csv 清管器十进制值不工作,csv,hadoop,apache-pig,etl,cloudera,Csv,Hadoop,Apache Pig,Etl,Cloudera,我正在cloudera学习PIG语言,我对十进制值有一些问题。 我有一个csv文件,其中有很多不同类型的数据。 我有一个名为“汽油平均值”的数据列,其值类似于“578524512” 我想从我的CSV文件加载此数据 我的剧本是: *> a = LOAD ‘myfile.csv’ USING PigStorage(‘;’) AS (country: chararray, > petrol_average: double); > > b = FOREACH a generat
*> a = LOAD ‘myfile.csv’ USING PigStorage(‘;’) AS (country: chararray,
> petrol_average: double);
>
> b = FOREACH a generate country, petrol_average;
>
> DUMP B;*
结果如下:
*"(Canada, )
(Brazil, 5.0)
(France, )
(United States 8.0)
..."*
在我的Csv文件中,我对加拿大和法国的汽油平均价格有价值。
我的pig脚本没有显示值,巴西的值为578524512,该值自动四舍五入
你对我的问题有什么答案吗
对不起我的英语
myfile.csv的示例
a、 578524512
b、 8596243
c、 15424685
d、 14253685
代码
A=使用PigStorage(',')加载'data/MyFile.txt',作为(国家/地区:chararray,汽油平均值:long) 注: 您已经用double创建了模式,但您的数据是简单的整数,所以它会删除第一个数字之后的数据,所以我已经使用了它 咕噜>倒垃圾 grunt>B=每个发电国的汽油平均值 咕噜声>转储B 结果 (a,578524512) (b,8596243) (c,15424685) (d,14253685) 工作很好快乐hadoop:) myfile.csv的示例 a、 578524512 b、 8596243 c、 15424685 d、 14253685
代码
A=使用PigStorage(',')加载'data/MyFile.txt',作为(国家/地区:chararray,汽油平均值:long) 注: 您已经用double创建了模式,但您的数据是简单的整数,所以它会删除第一个数字之后的数据,所以我已经使用了它 咕噜>倒垃圾 grunt>B=每个发电国的汽油平均值 咕噜声>转储B 结果 (a,578524512) (b,8596243) (c,15424685) (d,14253685) 干得好快乐的hadoop:)@MaheshGupta 感谢您的回答,当我使用float或long时,我得到如下结果:
()
(8.0)
()
()
()
()
()
()
()
()
()
当我在模式中将其声明为chararray时,我得到以下结果:
(9,100000381)
(8,199999809)
(8,399999619)
(8,100000381)
(8,399999619)
(8,399999619)
(8,399999619)
(8,100000381)
(8,5)
(8,199999809)
(9)
我的剧本是这样的:
a = LOAD 'myfile.csv' USING PigStorage(';') AS
(country: chararray;
petrol_average chararray);
b = FOREACH a generate petrol_average;
DUMP b;
我最大的问题是除法或加法,因为我做不到,类型是字符。@MaheshGupta
感谢您的回答,当我使用float或long时,我得到如下结果:
()
(8.0)
()
()
()
()
()
()
()
()
()
当我在模式中将其声明为chararray时,我得到以下结果:
(9,100000381)
(8,199999809)
(8,399999619)
(8,100000381)
(8,399999619)
(8,399999619)
(8,399999619)
(8,100000381)
(8,5)
(8,199999809)
(9)
我的剧本是这样的:
a = LOAD 'myfile.csv' USING PigStorage(';') AS
(country: chararray;
petrol_average chararray);
b = FOREACH a generate petrol_average;
DUMP b;
我最大的问题是除法或加法,因为我不能这样做,类型是字符。您可以转储关系a并显示输出,或者您可以上载CSV的样本,您可以转储关系a并显示输出,或者您可以上载CSV的样本以供回复,但是long类型对我不起作用,因为它是一个十进制值“5.78524512”,我目前使用chararray来获取完整值。a=Load'data/MyFile.txt'使用PigStorage(',')作为(国家:chararray,汽油平均值:float);它的工作很好,只是在关系A的pig模式中将long更改为float。感谢您的回复,但是long类型对我不起作用,因为它是十进制值“5.78524512”。我目前正在使用chararray来获取完整值。A=Load'data/MyFile.txt'使用PigStorage(',')作为(国家:chararray,汽油平均值:float);它的工作很好,只是在关系A的pig模式中变长为float。我认为您缺少了其他方面的内容,他们没有关于使用float或double类型的问题,您在字符中缺少了列(:),我认为您缺少了其他方面的内容,他们没有关于使用float或double类型的问题,您缺少了列(:)查拉雷