Я пытаюсь запустить простой код, чтобы просто показать базы данных, которые я создал ранее на моем сервере hive2. (обратите внимание, что в этом примере есть оба примера на python и scala с одинаковыми результатами).
Если я вхожу в оболочку улья и перечисляю свои базы данных, я вижу всего 3 базы данных.
Когда я запускаю оболочку Spark (2.3) в pyspark, я делаю обычное дело и добавляю следующее свойство в свой SparkSession:
sqlContext.setConf("hive.metastore.uris","thrift://*****:9083")
И перезапустите SparkContext в моем сеансе.
Если я запустил следующую строку, чтобы увидеть все конфигурации:
pyspark.conf.SparkConf().getAll()
spark.sparkContext._conf.getAll()
Я действительно вижу, что параметр был добавлен, я запускаю новый HiveContext:
hiveContext = pyspark.sql.HiveContext(sc)
Но если я перечислю свои базы данных:
hiveContext.sql("SHOW DATABASES").show()
Он не будет показывать такие же результаты для оболочки улья.
Я немного растерялся, по какой-то причине похоже, что он игнорирует параметр конфигурации, поскольку я уверен, что тот, который я использую, это мое метастор в качестве адреса, который я получаю от запуска:
hive -e "SET" | grep metastore.uris
Будет ли тот же адрес, если я бегу:
ses2 = spark.builder.master("local").appName("Hive_Test").config('hive.metastore.uris','thrift://******:9083').getOrCreate()
ses2.sql("SET").show()
Может быть проблема с разрешением? Например, некоторые таблицы не настроены так, чтобы их можно было видеть за пределами оболочки / пользователя улья.
Спасибо