Имена таблиц запросов - PullRequest
0 голосов
/ 03 апреля 2020

Мне предоставлен доступ к базе данных. Я запрашиваю данные из искрового кластера. Как проверить все базы данных / таблицы, к которым у меня есть доступ?

jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};user='{3}';password='{4}'".format(jdbcHostname, jdbcPort, jdbcDatabase, jdbcUsername, jdbcPassword)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword, 
  "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}
df = spark.read.jdbc(url=jdbcUrl, properties=connectionProperties)

Доступ к базе данных аутентифицирован.

1 Ответ

1 голос
/ 04 апреля 2020

В SQL Сам сервер:

select *
  from sys.tables

Не уверен, используете ли вы синоним или нет в качестве пути к схеме sys.

val tables = spark.read.jdbc(jdbc_url, "sys.tables", connectionProperties)
tables.select(...

Если у вас есть синоним, замените системные таблицы с этим. Существуют разные способы записи: вы go записываете таблицы или используете собственный подход SQL Query. Это подход таблиц. Вот под SQL Query подход, пример:

val dataframe_mysql = spark.read.jdbc(jdbcUrl, "(select k, v from sample order by k DESC) e", connectionProperties)  

SCALA версия, которую я только что понял.

pyspark конкретно

См. : https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html

Точно такой же подход, но специально для этого случая postgres:

jdbcDF = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:postgresql:dbserver") \
    .option("dbtable", "schema.tablename") \
    .option("user", "username") \
    .option("password", "password") \
    .load()

JDB C Загрузка и сохранение могут быть достигнуты с помощью либо методы load / save, либо jdb c, см. руководство.

...