Java 无法在esper中执行查询
我为执行查询而编写的代码如下:Java 无法在esper中执行查询,java,esper,Java,Esper,我为执行查询而编写的代码如下: EPServiceProvider cep = EPServiceProviderManager.getProvider("EventChannelling",config); EPRuntime rt=cep.getEPRuntime(); EPServiceProvider cep1 = EPServiceProviderManager.getDefaultProvider(config); String query = "create
EPServiceProvider cep = EPServiceProviderManager.getProvider("EventChannelling",config);
EPRuntime rt=cep.getEPRuntime();
EPServiceProvider cep1 = EPServiceProviderManager.getDefaultProvider(config);
String query = "create table CustomerRules ( C_ID String primary key, E_Type int primary key, Rule int )";
rt.executeQuery(query);
但我得到了以下错误:
线程“main”中出现异常
com.espertech.esper.client.EPStatementException:执行时出错
语句:0[create table CustomerRules(C_ID字符串主键,
E_Type int主键,Rule int)]在
com.espertech.esper.core.service.EPRuntimeImpl.getExecuteMethod(EPRuntimeImpl.java:1671)
在
com.espertech.esper.core.service.EPRuntimeImpl.executeQueryInternal(EPRuntimeImpl.java:1552)
在
com.espertech.esper.core.service.EPRuntimeImpl.executeQuery(EPRuntimeImpl.java:1526)
main(Example.java:148)
有人能告诉我这个错误的原因吗?使用
createpl
方法创建表。运行时查询API用于查询而不是创建表。请尝试以下操作:
Configuration config = new Configuration();
//TODO Configure...
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config);
Module module = epService.getEPAdministrator().getDeploymentAdmin().parse("create table CustomerRules (C_ID String primary key, E_Type int primary key, Rule int);");
epService.getEPAdministrator().getDeploymentAdmin().deploy(module, null);
epService.getEPRuntime().executeQuery("insert into CustomerRules(C_ID, E_Type, Rule) values ('1', 1, 1)");
让我知道它是否有效 问题在于,您试图使用EPRuntime执行create语句,该语句用于按需查询。请尝试以下方法:
Configuration config = new Configuration();
config.addEventType("Event", new String[] {"C_ID", "E_Type", "Rule"}, new Object[] {String.class, Integer.class, Integer.class});
EPServiceProvider cep = EPServiceProviderManager.getProvider("EventChannelling",config);
EPRuntime rt=cep.getEPRuntime();
String query = "create table CustomerRules ( C_ID String primary key, E_Type int primary key, Rule int )";
cep.getEPAdministrator().createEPL(query);
cep.getEPAdministrator().createEPL("insert into CustomerRules select C_ID, E_Type, Rule from Event");
cep.getEPRuntime().getEventSender("Event").sendEvent(new Object[]{"Prueba", 100, 100});
System.out.println(rt.executeQuery("select * from CustomerRules").getArray()[0].get("C_ID"));
我编译了这段代码,没有收到esper引擎的投诉,我得到了输出“Prueba”
让我知道这是否有用