Spark SQL创建Mysql映射表,直接通过jdbc查询混合数据源

该博客介绍了如何在Spark 2.3及以上版本中使用CREATE TABLE语句创建 JDBC 映射表,实现对MySQL等异构数据源的联邦查询。在创建表时,需指定URL、数据库名、表名、驱动、用户名和密码等选项,并注意配置相应的JDBC jar包。此外,表的元数据会存储在Hive Metadata中,可以通过spark-sql客户端查询列信息。
CREATE TABLE db_name.mysql_tb_mapping
USING org.apache.spark.sql.jdbc
OPTIONS (
  url "jdbc:mysql://xxx.xxx.xxx.xxx:3306/db_name?zeroDateTimeBehavior=convertToNull",
  dbtable "mysql_db_name.mysql_tb_name",
  driver "com.mysql.jdbc.Driver",
  user "xxxxxxx",
  password "xxxxxx"
)

spark在2.3以后可以使用 using语法创建多数据源的映射表,这样在spark-sql 客户端可以直接查询异构数据源,实现跨数据源的联邦查询。

需要注意的是如果spark-sql 配置hive数据源,这个表会写入hiveMetadata中。但是表的映射信息是写在TBLPROPERTIES属性里,所以建议使用spark-sql客户端查询具体的列信息。

spark-sql 启动时需要配置 jdbc的jar包,直接通过 --jars 配置即可。本方法也适用于其他jdbc数据源

建表语法规则如下

CREATE TABLE [ IF NOT EXISTS ] table_identifier
  [ ( col_name1 col_type1 [ COMMENT col_comment1 ], ... ) ]
  USING data_source
  [ OPTIONS ( key1 [ = ] val1, key2 [ = ] val2, ... ) ]
  [ PARTITIONED BY ( col_name1, col_name2, ... ) ]
  [ CLUSTERED BY ( col_name3, col_name4, ... )
      [ SORTED BY ( col_name [ ASC | DESC ], ... ) ]
      INTO num_buckets BUCKETS ]
  [ LOCATION path ]
  [ COMMENT table_comment ]
  [ TBLPROPERTIES ( key1 [ = ] val1, key2 [ = ] val2, ... ) ]
  [ AS select_statement ]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值