Skip to content

Al-xandr1/transaction-analytics

Repository files navigation

Тестовое задание

Задача

В hbase в TEST:Z_RECORDS (row key = C_MAIN_V_ID) загрузить транзакции по двум аналитическим счетам (диапазон историчности 30 минут: за каждые пять минут по каждому счету 5 транзакций).

Разработать приложение, которое будет вычитывать из hbase TEST:Z_RECORDS пятиминутные диапазоны, по каждому аналитическому счету формировать остаток на конец этого периода. Входящее сальдо на 14:00 по аналитическим счетам нулевое. Результат предоставить в виде графика изменения остатка по каждому аналитическому счету (шаг 5 минут).

C_LOAD_DATE - время транзакции C_MAIN_V_ID - аналитический счет SUMM - транзакция

Решение

Минимум (алгоритм)

Из-за отсутствия опыта работы с HBase принял решение сперва реализовать решение задачи без использования базы (т.к. не мог оценить временя, которое могло на это уйти), чтобы сначала реализовать алгоритм и получить графики.
В данном решении исходные данные просто грузятся из файла в оперативную память. Графики получены. Далее планируется подменить источник данных на загрузку из HBase.

Так как не было явного указания использовать Java, выбрал Kotlin для реализации прототипа. Выбор обоснован тем, что из SDK идёт больше утилитных методов для работы со Stream'ами, да и в целом для реализации кода в функциональном стиле. Присутствует совместимость с JVM платформой, поэтому можно вызывать любые библиотеки для обработки данных (АПИ для HBase или Spark, в частности).

Минимум (алгоритм) 2.0

Реализация программы Минимум на Java (на всякий случай).

Максимум (HBase)

Устнановил HBase на рабочу машину: http://hbase.apache.org/book.html#quickstart. Остановился на реализации тестовых классов для загрузки таблиц. Последняя блокирующия проблема: зависает на вставке значения в таблицу com/rd/transaction/hbase/SimpleInsert.java:35

Как запустить

  1. Для запуска реализации Java нужно в IDEA вызвать com.rd.transaction.MainJava из исходников
  2. Для запуска реализации Kotlin нужно в IDEA вызвать com.rd.transaction.Main.kt из исходников
  3. Для запуска из дистрибутива нужно:
  • Собрать проект
  • Запустить run.sh из дистрибутива ./build/distribution/transaction-analytics-1.0-SNAPSHOT.zip (запускается реализация Java)

Результат

Графики

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published