куст не поддерживает функцию слияния - PullRequest
0 голосов
/ 27 марта 2019

при попытке обновить значение из таблицы в другую таблицу, обе эти таблицы имеют одинаковое имя поля, но разные значения, запрос должен нормально работать на любой нормальной БД, но здесь он возвращает

Ошибка при компиляции оператора: СБОЙ: ParseException строка 1: 0 не может распознать вход рядом с 'MERGE' 'INTO' 'FINAL'

MERGE 
INTO FINAL 
USING FIRST_STAGE
ON IMSI = FIRST_STAGE.IMSI and Site = FIRST_STAGE.Site
WHEN MATCHED THEN UPDATE SET
  Min_Date = least(FIRST_STAGE.Min_Date, Min_Date),
  Max_Date = greatest(FIRST_STAGE.Max_Date, Max_Date),
  NoofDays = FIRST_STAGE.NoofDays + NoofDays,
  Down_Link = FIRST_STAGE.Down_Link + Down_Link,
  up_Link = FIRST_STAGE.up_Link + up_Link,
  connection = FIRST_STAGE.connection + connection
WHEN NOT MATCHED THEN INSERT ( Min_Date, 
  Max_Date, 
  NoofDays, 
  IMSI, 
  Site, 
  Down_Link, 
  Up_Link, 
  Connection )
VALUES ( FIRST_STAGE.Min_Date, 
  FIRST_STAGE.Max_Date, 
  FIRST_STAGE.NoofDays, 
  FIRST_STAGE.IMSI, 
  FIRST_STAGE.Site, 
  FIRST_STAGE.Down_Link, 
  FIRST_STAGE.Up_Link, 
  FIRST_STAGE.Connection )

1 Ответ

1 голос
/ 27 марта 2019

Улей оператор слияния введен в Hortonworks distribution.

  • Необходимое условие для запуска merge statement:

    Финальный стол должен быть создан с transactional enabled ,ORC format ,and bucketed.

AFAIK В случае Cloudera distribution нам нужно использовать Kudu для выполнения операций upsert, начиная с cloudera-5.10+.

Примечание: Upsert statement only works for Impala tables that use the Kudu storage engine.

  • Я не думаю, что мы можем запустить операторы слияния, как указано в посте в CDH дистрибутивах.
...