почему мой запрос свиньи возвращает неправильные значения - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь работать со следующим набором данных на свинье https://www.kaggle.com/zynicide/wine-reviews/version/4? Я получаю неправильные значения из моих запросов, единственная причина, о которой я могу думать, это то, что это связано с отсутствием данных в наборе данных но я не знаю, так ли это или почему я получаю неправильные значения

allWines = LOAD 'winemag-data_first150k.csv' USING PigStorage(',') AS (id:chararray, country:chararray, description:chararray, designation:chararray, points:chararray, price:chararray, province:chararray, region_2:chararray, region_1:chararray, variety:chararray, winery:chararray);

allWinesNotNull = FILTER allWines BY price is not null;
allWinesNotNull2 = FILTER allWinesNotNull BY points is not null;
allWinesPriceSorted = ORDER allWinesNotNull2 BY price;
allWinesPriceTop5Sorted = LIMIT allWinesPriceSorted  5;
allWinesPricePoints = FOREACH allWinesPriceTop5Sorted GENERATE id, price;
DUMP allWinesPricePoints;

DESCRIBE allWinesPricePoints;

Фактические результаты, которые я получаю: (56203, ароматизированные маслом тосты и специи, которые обернуты в кремовую текстуру. Должны держаться год или два. ") (61341, сладкие танины. Свежая кислотность придает ему дополнительный импульс. Дайте ему время. Лучший 2007–2012 годы. ») (16417, Шардоне также известен) (115384, миндаль и ваниль) (136804, миндаль и ваниль)

Я думаю, что вывод должен быть (56203, 23) (61341, 30) (16417, 16) (115384, 250) (136804, 250)

Я бы ожидал, что второе значение будет числовым и в столбце цены

1 Ответ

0 голосов
/ 14 мая 2019

Действуйте следующим образом:

allWines = LOAD 'winemag-data_first150k.csv' USING PigStorage(',') AS (id:chararray, country:chararray, description:chararray, designation:chararray, points:chararray, price:chararray, province:chararray, region_2:chararray, region_1:chararray, variety:chararray, winery:chararray);

--comments
--add below foreach to generate the values this will help you out to parse data correctly
--generate column in the same order as it is in the text file
allWines= FOREACH allWines GENERATE
id AS id,
country AS country,
description AS description,
designation AS designation,
points AS points,
price AS price, 
province AS provience,
region_2 AS region_2,
region_1 AS region_1,
variety AS variety,
winery AS winery;

allWinesNotNull = FILTER allWines BY price is not null;
allWinesNotNull2 = FILTER allWinesNotNull BY points is not null;
allWinesPriceSorted = ORDER allWinesNotNull2 BY price;
allWinesPriceTop5Sorted = LIMIT allWinesPriceSorted  5;
allWinesPricePoints = FOREACH allWinesPriceTop5Sorted GENERATE id, price;
DUMP allWinesPricePoints;
DESCRIBE allWinesPricePoints;

Надеюсь, это поможет вам. дайте мне знать в случае каких-либо проблем.

...