Это по сути вопрос дизайна, который у меня есть. Ищете наиболее эффективный способ выполнить это. Вот сценарий ....
У нас есть три элемента данных. Это:
DATASET 1 (HDFS) (Primary key: acct_num)
acct_num
3111
6111
DATASET 2 (HIVE) (Primary key: acct_num & cust_num)
acct_num|cust_num
1111|AAAA
2111|AAAA
3111|BBBB
4111|CCCC
5111|DDDD
6111|DDDD
DATASET 3 (HIVE) (Primary key: acct_num)
acct_num|last_cycle_dt
1111|20181225
2111|20190118
3111|20181220
4111|20181227
5111|20181223
6111|20181222
Я пытаюсь создать файл HDFS из фрейма данных, который представляет собой набор учетных записей, которые удовлетворяют следующим критериям:
Учетные записи, которые существуют в DATASET 1 ИЛИ учетные записи с последней датой цикла (last_cycle_dt), БОЛЬШЕ, чем предоставленное значение даты. Вот кривая: если вы удовлетворяете приведенному выше утверждению ИЛИ, мы ТАКЖЕ хотим ввести все ваши учетные записи (поэтому, если клиент AAAA удовлетворяет вышеуказанному условию для любой из его учетных записей, мы введем ВСЕ его учетные записи).
Итак, допустим, что «предоставленное значение даты» равно 20180116. Исходя из правил, которые я изложил выше, нам нужно будет ввести ВСЕ учетные записи, которые существуют в DATASET1 (потому что, если вы находитесь в DATASET 1, вы всегда должны быть в ) и любые учетные записи, чья дата последнего цикла (last_cycle_dt) является БОЛЬШЕ, чем 20180116. Единственными учетными записями, которые удовлетворяют этим требованиям, являются учетные записи 2111 и 5111. НО, теперь нам необходимо ввести учетные записи отношений с этим клиентом (ДЛЯ ОБОИ СЧЕТОВ В ДАННОЙ СЕТИ 1 И ЕСЛИ ВЫ УДОВЛЕТВОРЯЛИ ЛОГИКУ ПОСЛЕДНЕЙ ЦИКЛОВОЙ ДАТЫ !!!). Таким образом, наш последний набор данных будет (который будет включать столбцы из всех наборов данных, к которым мы присоединились)
RESULTS DATAFRAME (Written to HDFS)
acct_num|cust_num|last_cycle_dt
1111|AAAA|20170125
2111|AAAA|20180118
3111|BBBB|20171220
5111|DDDD|20181223
6111|DDDD|20181222
1111 и 2111 были введены, потому что 2111 удовлетворял логике даты последнего цикла, и поэтому мы ввели отношения. 3111 был введен, потому что он существовал в DATASET 1. 5111 и 6111 были введены, потому что 6111 существовал в DATASET 1, и мы установили отношения.
Я буду кодировать это в JAVA, используя SPARK. Я ищу дизайн высокого уровня для выполнения этого наиболее эффективным способом. Пример кода будет принята с благодарностью. Спасибо !!