Я использую временное представление для загрузки данных Oracle в Hive с использованием Spark SQL.Пример из документации Spark ниже:
CREATE TEMPORARY VIEW jdbcTable
USING org.apache.spark.sql.jdbc
OPTIONS (
url "jdbc:postgresql:dbserver",
dbtable "schema.tablename",
user 'username',
password 'password'
)
Это работает хорошо, но наличие пароля в виде открытого текста в представлении DDL означает, что пароль виден в журнале Spark Thrift Server.В pyspark я могу прочитать пароль, используя spark.jdbc.password
(как в Как защитить пароль и имя пользователя в Spark (например, для соединений JDBC / доступа к базам данных RDBMS)? ) и передать значение через:
jdbc_password = spark.conf.get('spark.jdbc.password')
df = spark.read.format('jdbc').options(
driver='oracle.jdbc.driver.OracleDriver',
url='jdbc:oracle:thin://@host:1521/svc',
user='db_user',
password=jdbc_password,
...
Но я не могу найти способ сделать это в чистом Spark SQL для использования через Thrift Server.
Предполагая, что это невозможно, было бы здорово подключиться к API учетных данных.Опять же, я могу сделать это через Python, но не вижу чистого способа SQL сделать это.
Кто-нибудь знает, возможно ли избежать использования пароля в виде открытого текста во временном представлении?
(Я перефразировал этот вопрос, так как, по-моему, я изначально неправильно понял spark.jdbc.password
)