我想使用 MySQL 数据库将 Hive 分析脚本的结果存储在 BAM 2.0.1 中。查看提供的示例,我可以看到我必须使用许多属性 (mapred.jdbc.*) 传递连接信息。
有没有办法使用 Carbon 数据源而不是直接的 jdbc 连接?我主要关心的是在脚本中使用明文密码,这在关注安全的组织中是一个很大的障碍。
TIA
是的,有可能。您可以使用 wso2.carbon.datasource.name 参数来传递碳数据源的名称。
需要使用密码,因为 Carbon 框架中尚未正确实现服务器到服务器的身份验证。但在最近的将来,我们希望通过改进 BAM 来消除这个问题。
使用 chamibuddhika 所描述的属性就可以了。下面的表声明显示了一个完整的示例:
CREATE EXTERNAL TABLE IF NOT EXISTS BatchSummaryByWeek(
execYear SMALLINT,
execWeek SMALLINT,
job_name STRING,
exit_code INT,
totalExecutions INT,
avgElapsed FLOAT,
maxElapsed INT,
minElapsed INT
)
STORED BY
'org.wso2.carbon.hadoop.hive.jdbc.storage.JDBCStorageHandler'
TBLPROPERTIES (
'wso2.carbon.datasource.name' = 'MYSQL_BAM',
'hive.jdbc.update.on.duplicate' = 'true' ,
'hive.jdbc.primary.key.fields' = 'execYear,execWeek,job_name,exit_code' ,
'hive.jdbc.table.create.query' = 'CREATE TABLE BatchSummaryByWeek(execYear INTEGER, execWeek SMALLINT,job_name VARCHAR(250), exit_code INT,totalExecutions INT, avgElapsed FLOAT, maxElapsed INT,minElapsed INT)' );