Хобрук: Ваш путь к мастерству в программировании

проблема присоединения к apache phoenix

когда я выполняю операцию запроса с «присоединением» в своем заявлении, я получаю информацию об ошибке. Ниже приведены сведения об ошибке, среде и версии.

  1. jdk-1.7.0_79
  2. Феникс-4.7.0
  3. Hbase-1.1.2 с 7 региональными серверами.

Причина: java.sql.SQLException: Обнаружено исключение при выполнении подплана [0]. at org.apache.phoenix.execute.HashJoinPlan.iterator(HashJoinPlan.java:193) at org.apache.phoenix.mapreduce.PhoenixInputFormat.getQueryPlan(PhoenixInputFormat.java:129) ... еще 11 Вызвано: java.sql. SQLException: java.lang.ArrayIndexOutOfBoundsException: 1 в org.apache.phoenix.cache.ServerCacheClient.addServerCache(ServerCacheClient.java:266) в org.apache.phoenix.join.HashCacheClient.addHashCache(HashCacheClient.java:84) в org. apache.phoenix.execute.HashJoinPlan$HashSubPlan.execute(HashJoinPlan.java:381) в org.apache.phoenix.execute.HashJoinPlan$1.call(HashJoinPlan.java:162) в org.apache.phoenix.execute.HashJoinPlan$1. call(HashJoinPlan.java:158) в java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) в java.util.concurrent.FutureTask.run(FutureTask.java:166) в org.apache.phoenix .job.JobManager$InstrumentedJobFutureTask.run(JobManager.java:183) ... еще 3 Вызывается: java.lang.ArrayIndexOutOfBound sException: 1 в org.apache.hadoop.io.FastByteComparisons$LexicographicalComparerHolder$UnsafeComparer.compareTo(FastByteComparisons.java:245) в org.apache.hadoop.io.FastByteComparisons$LexicographicalComparerHolder$UnsafeComparer.compareTo(FastByteComparisons.java) в 132 org.apache.hadoop.io.FastByteComparisons.compareTo(FastByteComparisons.java:46) в org.apache.hadoop.io.WritableComparator.compareBytes(WritableComparator.java:188) в org.apache.phoenix.util.ScanUtil$2.compare (ScanUtil.java:484) по адресу org.apache.phoenix.query.KeyRange.compareUpperToLowerBound(KeyRange.java:277) по адресу org.apache.phoenix.query.KeyRange.compareUpperToLowerBound(KeyRange.java:222) по адресу org.apache. Phoenix. 182) на орг. apache.phoenix.compile.ScanRanges.intersectScan(ScanRanges.java:331) в org.apache.phoenix.compile.ScanRanges.intersects(ScanRanges.java:421) в org.apache.phoenix.cache.ServerCacheClient.addServerCache(ServerCacheClient. java:175) ... еще 10

Ниже приведен sql.

select a.MINITORDATE as MINITORDATE ,TEMPVAL, HUMVAL,PM25VAL ,NCPM25VAL from (
               ( select    "Data_minitorDate" as MINITORDATE ,"Data_minitorVal" as PM25VAL from AQM.AQMDATA_ALL   where 1=1   AND SUBSTR(ROW,8,2) = '00' AND SUBSTR(ROW,1,6) = '099812' AND SUBSTR(ROW,10,2) = '00' AND SUBSTR(ROW,12,2) = '00' 
                  AND "Data_minitorDate" between '2016-08-22 00:00:00' and '2016-08-23 23:59:59') a 
                 INNER JOIN  
                ( select    "Data_minitorDate" as MINITORDATE ,"Data_minitorVal" as TEMPVAL from AQM.AQMDATA_ALL   where 1=1   AND SUBSTR(ROW,8,2) = '00' AND SUBSTR(ROW,1,6) = '099812' AND SUBSTR(ROW,10,2) = '02' AND SUBSTR(ROW,12,2) = '00' 
                   AND "Data_minitorDate" between '2016-08-22 00:00:00' and '2016-08-23 23:59:59') b  on b.MINITORDATE = a.MINITORDATE  
                INNER JOIN 
                ( select    "Data_minitorDate" as MINITORDATE ,"Data_minitorVal" as HUMVAL from AQM.AQMDATA_ALL   where 1=1   AND SUBSTR(ROW,8,2) = '00' AND SUBSTR(ROW,1,6) = '099812' AND SUBSTR(ROW,10,2) = '03' AND SUBSTR(ROW,12,2) = '00' 
                   AND "Data_minitorDate" between '2016-08-22 00:00:00' and '2016-08-23 23:59:59') c  on c.MINITORDATE = b.MINITORDATE  
                INNER JOIN 
                ( select    "Data_minitorDate" as MINITORDATE ,"Data_minitorVal" as NCPM25VAL from AQM.AQMDATA_ALL   where 1=1   AND SUBSTR(ROW,8,2) = '02' AND SUBSTR(ROW,1,6) = '023120' AND SUBSTR(ROW,10,2) = '00' AND SUBSTR(ROW,12,2) = '00' 
                   AND "Data_minitorDate" between '2016-08-22 00:00:00' and '2016-08-23 23:59:59') d on d.MINITORDATE = c.MINITORDATE 
                )  

Таблица "AQM.AQMDATA_ALL" создана Phoenix, и SALT_BUCKETS = 28. Количество строк в "AQM.AQMDATA_ALL" составляет около 6 миллионов.

Без SALT_BUCKETS или использования приведенного ниже sql запрос в порядке !!!

 select a.MINITORDATE as MINITORDATE ,TEMPVAL, HUMVAL,PM25VAL ,NCPM25VAL from (
               ( select   "Data_minitorDate" as MINITORDATE ,"Data_minitorVal" as PM25VAL from AQM.AQMDATA_ALL   where 1=1   AND SUBSTR(ROW,8,2) = '00' AND SUBSTR(ROW,1,6) = '099812' AND SUBSTR(ROW,10,2) = '00' AND SUBSTR(ROW,12,2) = '00' 
                  AND "Data_minitorDate" between '2016-08-22 00:00:00' and '2016-08-23 23:59:59') a 
                 INNER JOIN  
                ( select   "Data_minitorDate" as MINITORDATE ,"Data_minitorVal" as TEMPVAL from AQM.AQMDATA_ALL   where 1=1   AND SUBSTR(ROW,8,2) = '00' AND SUBSTR(ROW,1,6) = '099812' AND SUBSTR(ROW,10,2) = '02' AND SUBSTR(ROW,12,2) = '00' 
                   AND "Data_minitorDate" between '2016-08-22 00:00:00' and '2016-08-23 23:59:59') b  on b.MINITORDATE = a.MINITORDATE  
                INNER JOIN 
                ( select    "Data_minitorDate" as MINITORDATE ,"Data_minitorVal" as HUMVAL from AQM.AQMDATA_ALL   where 1=1   AND SUBSTR(ROW,8,2) = '00' AND SUBSTR(ROW,1,6) = '099812' AND SUBSTR(ROW,10,2) = '03' AND SUBSTR(ROW,12,2) = '00' 
                   AND "Data_minitorDate" between '2016-08-22 00:00:00' and '2016-08-23 23:59:59') c  on c.MINITORDATE = b.MINITORDATE  )

Единственная разница между двумя вышеуказанными операторами заключается в отсутствии одного «внутреннего соединения».

Не только выполняя запрос с SQL-клиентом SQuirreL, но и выполняя задание MapReduce с phoenix-client, я сталкиваюсь с той же проблемой.

Пожалуйста помоги мне с этим.

С уважением!


Ответы:


1

В Splice Machine (с открытым исходным кодом) мы провели тест TPCH 1 Gig с последней версией Phoenix и увидели множество исключений при выполнении подплана. Однако у нас не было соленых столов.

Я бы зарегистрировал ошибку напрямую через JIRA, используя только вашу схему. Похоже, что в плане запроса есть проблема синтаксического анализа.

Будьте осторожны при выполнении большого количества объединений в Phoenix, оно не масштабируется (присоединение выполняется на клиенте).

См. слайд 20 в этой презентации члена команды phoenix.

http://www.slideshare.net/enissoz/apache-phoenix-past-present-and-future-of-sql-over-hbase

Удачи.

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

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..