之前,我在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 url?
发布于 2018-12-12 01:25:41
在最新的SnappyData版本1.0.2.1中,可以使用extended describe查看所有表属性:
describe extended EXT_DIM_CITY这些属性将在具有" properties:“标签的"# Detailed Table Information”行下可见。请注意,当从snappy shell运行时,您将需要增加最大显示宽度以查看字符串列的全值(maximumdisplaywidth 2000)。
但是,在这种情况下,url属性值被故意屏蔽为"###“,因为它包含嵌入的密码。如果分别指定了"user“和"password”选项,则只会屏蔽"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()
}如果表在默认的“TableIdentifier”之外的模式中,请在上面的APP构造函数中使用一些(“模式”)。使用gradle/maven等构建工具或直接使用scalac编译代码:scalac -classpath '/path/to/product/jars/*‘CatalogReadJob.scala
创建一个jar,比如说test.jar,然后提交: snappy-job.sh提交--lead :8090 --app-name CatalogRead --类test.CatalogReadJob --app-jar test.jar
URL和所有其他表属性应转储到/tmp/EXT_DIM_CITY-metadata.txt中
https://stackoverflow.com/questions/53388666
复制相似问题