Динамический UDF в кластере Apache Drill - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть блок сверла с 4 сверлами (упражнение 1.14).Но я не могу использовать функцию динамического UDF в кластере по какой-то причине.Каждый раз я сталкивался с неприятностями.

Позвольте мне представить 2 сценария:

Сценарий 1
Вот конфиг (конфиги одинаковы для всех битов сверления):

drill.exec: {
  cluster-id: "drill-test",
  zk: {
    connect: "vm29.local:2181,vm32.local:2181,vm39.local:2181",
    root: "drill"
    },
  sys.store.provider.zk.blobroot: "hdfs://vm29.local:9000/apps/drill/pstore/",
  http: {
    enabled: true,
    ssl_enabled: false,
    port: 8047
    session_max_idle_secs: 3600, # Default value 1hr
    cors: {
      enabled: true,
      allowedOrigins: ["*"],
      allowedMethods: ["GET", "POST", "HEAD", "OPTIONS"],
      allowedHeaders: ["X-Requested-With", "Content-Type", "Accept", "Origin"],
    }
  }
}

drill.exec.udf: {
                retry-attempts: 5,
   directory: {
        fs: "hdfs://vm29.local:9000/",
        root: "/drill",
                base: "/udf",
                local: ${drill.exec.udf.directory.base}"/local",
                staging: ${drill.exec.udf.directory.base}"/staging",
                registry: ${drill.exec.udf.directory.base}"/registry",
                tmp: ${drill.exec.udf.directory.base}"/tmp"
                }
   }

Как видите, я использую hdfs для UDF в этом сценарии.
Когда я помещаю jar-файлы в папку 'staging' и запускаю 'CREATE FUNCTION USING JAR' - он успешно регистрирует функцию.НО тогда я могу использовать его только на дрели, где я его зарегистрировал.
Например, если я запустил команду в веб-интерфейсе в vm29 - я могу использовать функцию только в vm29.
Если дополнительно, я пытаюсь зарегистрировать jar вдругой сверло - я получаю «уже зарегистрированную» ошибку - но не могу ее использовать. (ошибка не найдена) JAR-файлы присутствуют в hdfs://vm29.local:9000/drill/udf/registry и метаданные в реестре ZK.

Сценарий 2
Конфигурация та же, только с отличием - все сверла используют свою локальную файловую систему для папки UDF.

В этом случае - я могу зарегистрировать / отменить регистрацию функции - но я не могу использовать ее на каждом сверле (ошибка не найдена).Файлы JAR присутствуют в папке / UDF / registry, а метаданные в реестре zk - но не работают.

Что я делаю не так?
Не могу найти описание пошаговой инструкции по использованию функции Dynamic UDF в кластере.Может быть, вы знаете один?

Спасибо.

обновлено:

Я просто подумал: я использую веб-консоль для запросов.Может быть, в этом есть разница - создать функцию через веб-консоль или соединение jdbc: zk?(Я проверю)

Причина и результаты
Это ошибка в упражнении 1.14
Сообщалось в Drill Jira
Исправить с объяснением: Drill GitHub хранилище

1 Ответ

0 голосов
/ 26 сентября 2018

Это регрессия с 1.13, мы открыли тикет Jira - https://issues.apache.org/jira/browse/DRILL-6762. Между тем, вы можете добавить пользовательские udfs вручную - https://drill.apache.org/docs/manually-adding-custom-functions-to-drill/.

...