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

我正在cloudera学习PIG语言,我对十进制值有一些问题。 我有一个csv文件,其中有很多不同类型的数据。 我有一个名为“汽油平均值”的数据列,其值类似于“578524512”

我想从我的CSV文件加载此数据

我的剧本是:

*> 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类型的问题,您缺少了列(:)查拉雷