Доступ к внешней таблице Hive с помощью KafkaStorageHandler в среде Kerberized Hadoop - PullRequest
0 голосов
/ 10 октября 2019

У меня есть кластер Hadoop на базе HDP 3.1 с HDFS, Hive и Kafka. Я создал тему test_topic, в которой я могу отправлять и читать сообщения, используя kafka-console-producer и kafka-console-consumer. Я предоставил все права на эту тему Kafka с помощью плагина Kafka в Ranger.

Теперь я хочу получить доступ к этой теме Kafka из Hive. Поэтому я создал внешнюю таблицу Hive с помощью KafkaStorageHandler:

CREATE EXTERNAL TABLE mydb.kafka_test_topic (
  a String,
  b int
) 
STORED BY 'org.apache.hadoop.hive.kafka.KafkaStorageHandler'
TBLPROPERTIES
  ("kafka.topic" = "test_topic", "kafka.bootstrap.servers"="my.server:6667");

Я также добавил все права на эту таблицу с помощью плагина Hive в Ranger.

Когда я пытаюсь получить доступ к этим данным из Beelineнапример, используя SELECT * FROM mydb.kafka_test_topic, я получаю следующее исключение:

Error: java.io.IOException: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [test_topic] (state=,code=0)
  • Конечно, я сделал kinit myuser перед открытием Beeline

Первый обходной путь былна данный момент, чтобы добавить пользователя hive к разрешениям для темы Kafka в плагине Ranger's Kafka. Я хочу, чтобы «конечный пользователь» мог получить доступ к этой теме без обходного пути для этого улья.

Может ли кто-нибудь помочь?

Спасибо!

...