以前,我在SnappyData中创建了一个外部表,如下所示:
create external table EXT_DIM_CITY
using jdbc options(url 'jdbc:mysql://***:5002/***?user=***&password=***',
driver 'com.mysql.jdbc.Driver',
dbtable 'dim_city');
但是现在我忘记了EXT_DIM_CITY引用的mysql jdbc url。如何从SnappyData获取jdbc网址?
答案 0 :(得分:1)
在最新的SnappyData版本1.0.2.1中,可以使用扩展描述看到所有表属性:
describe extended EXT_DIM_CITY
这些属性将在带有“属性:”标签的“#详细表信息”行下可见。请注意,从灵活的shell运行时,您需要增加最大显示宽度以查看字符串列的完整值(最大显示宽度2000)。
但是,在这种情况下,故意将url属性值屏蔽为“ ###”,因为它包含嵌入式密码。如果您分别指定了“用户”和“密码”选项,则只有“ password”属性会被屏蔽,而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()
}
如果表位于默认“ APP”以外的模式中,请在上面的TableIdentifier构造函数中使用Some(“ schema”)。使用gradle / maven等构建工具或直接使用scalac编译代码:scalac -classpath'/ path / to / product / jars / *'CatalogReadJob.scala
创建一个jar,比如说test.jar,然后提交:snappy-job.sh Submit --lead:8090 --app-name CatalogRead --class test.CatalogReadJob --app-jar test.jar
URL和所有其他表属性应转储到/tmp/EXT_DIM_CITY-metadata.txt