#apache-spark #jdbc #databricks #azure-databricks
Вопрос:
Драйвер Spark JDBC (SparkJDBC42.jar) не удается получить определенную информацию из приведенной ниже структуры таблицы:
- комментарий на уровне таблицы
- Информация о паре ключ-значение TBLPROPERTIES
- РАЗДЕЛ ПО информации
Тем не менее, он захватывает комментарий на уровне столбца (например. комментарий к столбцу 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 на базе данных, которая понимает эти команды