У меня есть блок сверла с 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 хранилище