JdbcStorageHandler 项目地址
https://github.com/qubole/Hive-JDBC-Storage-Handler
可以使用如下的建表语句在 hive 中创建符合 jdbc 的数据库支持的表。
CREATE EXTERNAL TABLE domains (
id INT,
account_id INT,
domain_name STRING,
created STRING,
modified STRING,
link_metric_id INT,
config_domain_id INT
)
STORED BY `org.apache.hadoop.hive.jdbc.storagehandler.JDBCStorageHandler`
TBLPROPERTIES (
“mapred.jdbc.driver.class” = “com.mysql.jdbc.Driver”, --jdbc类
“mapred.jdbc.url” =
“jdbc:mysql://${jdbc.reporting.host}/${jdbc.reporting.databaseName}”, --jdbc url
“mapred.jdbc.input.table.name” = “domains”, --表名
“mapred.jdbc.username” = “${jdbc.reporting.username}”, --mysql user
“mapred.jdbc.password” = “${jdbc.reporting.password}”,
“hive.jdbc.update.on.duplicate” = “true”
);
当然也可以在TBLPROPERTIES 中指定表的列:
‘mapred.jdbc.input.field.name’=‘col1,col2,....’
一旦建表成功你就可以想hive表一样使用mysql中的表,当然前提是mysql中的表存在,如果mysql中的表被删除,自然也就无法通过jdbc连接到该表执行相关查询。
存储处理程序提供对谓词下推的支持。这意味着任何WHERE子句表达式都可以由
底层数据库处理。
一些其他的参数供参考: