Как я могу получить внешнюю таблицу JDBC URL в SnappyData - PullRequest
0 голосов
/ 20 ноября 2018

Ранее я создавал внешнюю таблицу в SnappyData следующим образом:

create external table EXT_DIM_CITY
using jdbc options(url 'jdbc:mysql://***:5002/***?user=***&password=***', 
driver 'com.mysql.jdbc.Driver',
dbtable 'dim_city');

, но теперь я забываю URL-адрес mysql jdbc, на который ссылался EXT_DIM_CITY.Как я могу получить URL JDBC из SnappyData?

1 Ответ

0 голосов
/ 11 декабря 2018

В последнем выпуске SnappyData 1.0.2.1 все свойства таблицы можно увидеть с расширенным описанием:

describe extended EXT_DIM_CITY

Свойства будут отображаться под строкой «# Подробная информация о таблице», которая имеет «Свойства: " тег.Обратите внимание, что при запуске из оболочки snappy вам потребуется увеличить максимальную ширину экрана, чтобы увидеть полное значение столбца строки (MaximumDisplaywidth 2000).

Однако в этом случае значение свойства url намеренно маскируетсякак "###", потому что он содержит встроенный пароль.Если бы параметры «пользователь» и «пароль» были указаны отдельно, то было бы скрыто только свойство «пароль», а URL-адрес был бы виден.

Так что в этом случае вы можете вместо этого написать задание для принудительного выполнения.отобразите значение напрямую, используя API каталога, как показано ниже (код Scala):

package test

import java.io.PrintWriter

import com.typesafe.config.Config

import org.apache.spark.sql.catalyst.TableIdentifier
import org.apache.spark.sql._

object CatalogReadJob extends SnappySQLJob {
  override def runSnappyJob(session: SnappySession, jobConfig: Config): Any = {
    val catalog = session.sessionCatalog
    val metadata = catalog.getTableMetadata(new TableIdentifier("EXT_DIM_CITY"))
    // dump metadata properties to a file
    new PrintWriter("/tmp/EXT_DIM_CITY-metadata.txt") {
      write(metadata.toString() + "\nFull URL = " + metadata.storage.properties("url"))
      close()
    }
  }

  override def isValidJob(ss: SnappySession, conf: Config): SnappyJobValidation = SnappyJobValid()
}

Используйте Some ("схема") в конструкторе TableIdentifier выше, если таблица находится в схеме, отличной от "APP" по умолчанию.Скомпилируйте код, используя инструменты сборки, такие как gradle / maven и т. Д. Или напрямую, используя scalac: scalac -classpath '/ path / to / product / jars / *' CatalogReadJob.scala

Создайте jar, скажем test.jar, затемsubmit: snappy-job.sh submit --lead: 8090 --app-name CatalogRead --class test.CatalogReadJob --app-jar test.jar

URL-адрес и все другие свойства таблицы должны быть выгружены в/tmp/EXT_DIM_CITY-metadata.txt

...