Nano Hash - криптовалюты, майнинг, программирование

Apache PIG - установить дату текущей строки в качестве даты следующей записи

В Pig у меня есть требование установить avail_until в качестве avail_since следующих записей с учетом определенного идентификатора и по умолчанию использовать 9999-12-31 для последней записи данного идентификатора. Я начинаю с упорядочения данных по идентификатору, а затем Avail_Since, но после этого застреваю. Я думаю, что мне может понадобиться функция over/stitch/lead/lag, но не уверен. Любая помощь будет принята с благодарностью!

 Input Data:

 ID       AVAIL_SINCE    AVAIL_UNTIL
 1        19-Jan-00      31-Dec-99
 1        11-Jun-00      31-Dec-99
 1        4-Aug-00       31-Dec-99
 1        19-May-01      31-Dec-99 
 2        5-May-02       31-Dec-99 
 2        8-Apr-03       31-Dec-99 
 3        10-Jun-00      31-Dec-99 
 3        31-Oct-00      31-Dec-99 
 3        29-Dec-00      31-Dec-99  

 Required Result:

 ID       AVAIL_SINCE    AVAIL_UNTIL
 1        19-Jan-00      11-Jun-00
 1        11-Jun-00      4-Aug-00
 1        4-Aug-00       19-May-01
 1        19-May-01      31-Dec-99
 2        5-May-02       8-Apr-03 
 2        8-Apr-03       31-Dec-99
 3        10-Jun-00      31-Oct-00
 3        31-Oct-00      29-Dec-00
 3        29-Dec-00      31-Dec-99
30.08.2016

Ответы:


1

Вам придется загрузить данные дважды, ранжировать их для создания уникальных идентификаторов, отфильтровать верхние записи из второго набора данных, снова ранжировать их, затем объединить наборы данных по уникальным идентификаторам, получить последнюю запись из первого набора данных и объединить ее с присоединенный набор данных. См. ниже

Скрипт

A = LOAD 'test9.txt' USING PigStorage('\t') as (A1:int,A2:chararray,A3:chararray);
B = LOAD 'test9.txt' USING PigStorage('\t') as (B1:int,B2:chararray,B3:chararray);
RankA = rank A;
RankB = rank B;

BB = FILTER RankB by (rank_B > 1);
BB_New = rank BB;

AB = JOIN RankA by rank_A,BB_New by rank_BB;
AB_ALL = foreach AB GENERATE RankA::A1,RankA::A2,BB_New::B2;
A_Order = ORDER RankA by rank_A desc;
A_Last = LIMIT A_Order 1;
A_Fields = foreach A_Last generate $1,$2,$3;

FINAL = UNION A_Fields,AB_ALL;
FINALORDER = ORDER FINAL BY $0;
DUMP FINALORDER;

Выход

введите здесь описание изображения

30.08.2016

2

Я расширю решение @inuistive_mind, чтобы получить точный результат.

A = LOAD 'test9.txt' USING PigStorage('\t') as (A1:int,A2:chararray,A3:chararray);
B = LOAD 'test9.txt' USING PigStorage('\t') as (B1:int,B2:chararray,B3:chararray);
RankA = rank A;
RankB = rank B;

BB = FILTER RankB by (rank_B > 1);
BB_New = rank BB;

AB = JOIN RankA by rank_A,BB_New by rank_BB;
AB_ALL = foreach AB GENERATE RankA::A1,RankA::A2,BB_New::B2;
A_Order = ORDER RankA by rank_A desc;
A_Last = LIMIT A_Order 1;
A_Fields = foreach A_Last generate $1,$2,$3;

FINAL = UNION A_Fields,AB_ALL;
FINALORDER = ORDER FINAL BY $0;

Шаги нужно добавить

Step-1  F1 = rank FINALORDER..
Step-2  Group BY A1; ie ID.
Step-3  F2 = foreach byid generate MAX(FINAL.rank_FINAL) AS mx, '31-Dec-99' as AVAIL_UNTIL1.
Step-4  F3 = join F1 by rank_FINALORDER with F2 by mx as left outer join.
Step-5  F4 generated the required column with (AVAIL_UNTIL1 is null)? F1::A3 : F2::AVAIL_UNTIL1 as AVAIL_UNTIL..

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

31.08.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..