Метаданные таблицы Databricks через драйвер JDBC

#apache-spark #jdbc #databricks #azure-databricks

Вопрос:

Драйвер Spark JDBC (SparkJDBC42.jar) не удается получить определенную информацию из приведенной ниже структуры таблицы:

  1. комментарий на уровне таблицы
  2. Информация о паре ключ-значение TBLPROPERTIES
  3. РАЗДЕЛ ПО информации

Тем не менее, он захватывает комментарий на уровне столбца (например. комментарий к столбцу employee_number), все столбцы таблицы employee, их технические типы данных.

Пожалуйста, сообщите, нужно ли мне настраивать какие-либо дополнительные свойства, чтобы иметь возможность считывать/извлекать информацию, которую драйвер не смог извлечь в данный момент.

 create table default.employee( 
  employee_number INT COMMENT ‘Unique identifier for an employee’, 
  employee_name VARCHAR(50), 
  employee_age INT)
PARTITIONED BY (employee_age) 
COMMENT ‘this is a table level comment’ 
TBLPROPERTIES (‘created.by.user’ = ‘Noor’, ‘created.date’ = ‘10-08-2021’);
 

Ответ №1:

Вы должны быть в состоянии выполнить:

 describe table extended default.employee
 

также через интерфейс JDBC. В первом случае он вернет таблицу с 3 столбцами, которую вы можете проанализировать в свойствах уровня столбцов и уровня таблицы — это не должно быть очень сложным, так как существуют явные разделители между данными уровня строк и уровня таблицы:

введите описание изображения здесь

Вы также можете выполнить:

 show create table default.employee
 

это даст вам таблицу с одним столбцом, содержащую инструкцию SQL, которую вы можете проанализировать:

введите описание изображения здесь

Комментарии:

1. Привет, Алекс, По умолчанию драйвер JDBC отправляет в базу данных команду «описать default.employee2». Из-за этого я думаю, что расширенные свойства не фиксируются. Есть ли способ указать в качестве настраиваемого свойства для ввода метаданных расширенных свойств? Пожалуйста, обратите внимание, что у меня нет контроля над написанием собственных команд для выполнения драйвера JDBC в базе данных.

2. Хммм. Я проверил это вчера с помощью драйвера ODBC — все работало просто отлично. Команда отправляется в Spark на базе данных, которая понимает эти команды