У меня есть две точки зрения в моем ульеАльтернатива улья присоединиться
+------------+
| Table_1 |
+------------+
| hash |
| campaignId |
+------------+
+-----------------+
| Table_2 |
+-----------------+
| campaignId |
| accountId |
| parentAccountID |
+-----------------+
Теперь я должен получить данные «Table_1» фильтруется ACCOUNTID & parentAccountID, для которого я написал следующий запрос:
SELECT /*+ MAPJOIN(T2) */ T1.hash, COUNT(T1.campaignId) num_campaigns
FROM Table_1 T1
JOIN Table_2 T2 ON T1.campaignId = T2.campaignId
WHERE (T2.accountId IN ('aid1', 'aid2') OR T2.parentAccountID IN ('aid1', 'aid2')
GROUP BY T1.hash
Этот запрос работает, но медленный. Есть ли какая-то лучшая альтернатива этому (JOIN)?
Я читаю Table_1 от kafka через искру.
слайдов Продолжительность 5 сек
Окно Продолжительность 2 минуты
В то время как Table_2 в RDBMS, который искры читает через JDBC, и это имеет 4500 записей.
Каждые 5 секунд насосы kafka приблизительно в 2K записываются в формате CSV.
Мне нужны данные для обработки в течение 5 секунд, но в настоящее время это занимает от 8 до 16 секунд.
В соответствии с предложений:
- Я отформатировал Table_1 столбцов CAMPAIGNID & хэша соответственно.
- Я переделал таблицу_2 по столбцам accountId & parentAccountID соответственно.
- Я реализовал MAPJOIN.
Но все же никакого улучшения.
ПРИМЕЧАНИЕ: Если я удалю длительность окна, процесс будет выполнен в течение времени. Может быть, из-за меньшего количества данных для обработки. Но это не требование.
** (1) ** Как вы бы описали "slow"? ** (2) ** В каких объемах мы говорим? –
Я использую это в искровом потоке, обрабатывая данные каждые 5 секунд. Но он занимает более 10 секунд для обработки каждой партии. (Примечание. Длительность слайда составляет 5 секунд, а продолжительность окна - 10 секунд). Каждая партия имеет около 24 тыс. Записей. –
Вам нужен столбец «хэш»? –