如何在 SnappyData 中获取外部表 jdbc url

Posted

技术标签:

【中文标题】如何在 SnappyData 中获取外部表 jdbc url【英文标题】:How can I get external table jdbc url in SnappyData 【发布时间】:2018-11-20 08:09:15 【问题描述】:

之前我在 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?

【问题讨论】:

【参考方案1】:

使用最新的 SnappyData 版本 1.0.2.1,所有表属性都可以通过扩展描述查看:

describe extended EXT_DIM_CITY

这些属性将显示在带有“Properties:”标签的“#Detailed Table Information”行下。请注意,从 snappy shell 运行时,您需要增加最大显示宽度才能看到字符串列的完整值(最大显示宽度 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()

如果表位于默认“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

【讨论】:

以上是关于如何在 SnappyData 中获取外部表 jdbc url的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SnappyData 中对列表中的数据进行分区?

部署 SnappyData-0.5 pulse.war 时出现 Bean 缺失错误

SnappyData 每行 TTL

Snappydata 存储与来自现有 spark 安装的 hive 元存储

如何将 SnappyData 与 Kerberos 集成

SnappyData 上的 Theta Sketch (Yahoo)