我正在尝试从WSO2 BAM执行一个简单的Hive脚本,我收到以下错误:
TID:[0] [BAM] [2014-06-10 17:55:24,752] ERROR {org.wso2.carbon.hadoop.hive.jdbc.storage.db.DBManager} - 无法获得连接{org .wso2.carbon.hadoop.hive.jdbc.storage.db.DBManager} org.h2.jdbc.JdbcSQLException:数据库可能已在使用中:“被另一个进程锁定”。可能的解决方案:关闭所有其他连接;使用服务器模式; SQL语句: null / 1468667eba66dbdf45540920bcb8b07d6d24451f741 [90020-140] '
Hive脚本:
DROP TABLE IF EXISTS ProjectServicesTable; DROP TABLE IF EXISTS ProjectServicesPerDateTable;
创建外部表,如果不是EXProTS ProjectServicesTable (rowID STRING,metaHost STRING,exeTimestamp BIGINT,nickName STRING, 描述STRING,版本STRING)STORED BY 'org.apache.hadoop.hive.cassandra.CassandraStorageHandler' 与SERDEPROPERTIES( “wso2.carbon.datasource.name”=“WSO2BAM_CASSANDRA_DATASOURCE”, “cassandra.ks.name”=“EVENT_KS”, “cassandra.cf.name”=“stream1”, “cassandra.columns.mapping”= “:key,meta_host,Timestamp,Nick_Name,Description,Version”);
CREATE EXTERNAL TABLE IF NOT NOT EXISTS ProjectServicesPerDateTable(exeDate STRING,totalServices INT)STORED BY 'org.wso2.carbon.hadoop.hive.jdbc.storage.JDBCStorageHandler' TBLPROPERTIES( 'wso2.carbon.datasource.name'= 'WSO2_CARBON_DB', 'hive.jdbc.update.on.duplicate'='true', 'hive.jdbc.primary.key.fields'='exeDate', 'hive.jdbc.table.create.query'= 'CREATE TABLE PROJECT_SERVICES_DATE_SUMMARY(exeDate VARCHAR(30)NOT NULL PRIMARY KEY,totalServices INT)');
插入覆盖表ProjectServicesPerDateTable select substring(from_unixtime(cast(exeTimestamp / 1000 as BIGINT),'yyyy-MM-dd HH:mm:ss'),0,10)as exeDate,count(rowID)as ProjectServices from ProjectServicesTable group by substring(from_unixtime(cast(exeTimestamp / 1000 as BIGINT),'yyyy-MM-dd HH:mm:ss'),0,10);
表PROJECT_SERVICES_DATE_SUMMARY已成功创建。
有趣的(对我而言)是,相同的脚本通常在另一台计算机上运行,其中BAM以相同的方式配置。唯一的区别是操作系统 - Windows Server 2012 R2 Standard(脚本失败)和Windows 7 Professional(脚本运行良好)。