api - PPTV/Pike GitHub Wiki
Pike提供api交互方式,初始化一些配置,就能提交一个sql到storm。PikeContext是pike api的核心,可以通过PikeContextBuilder构造一个PikeContext。
通过一个简单的列子来展示api的用法,首先构造一个PikeContext,初始化数据源和数据目的地相关参数:
Configuration config = new Configuration();
config.put(Configuration.localMode, "true");
config.put(Configuration.localRunSeconds, "20");
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
config.addResource(classLoader.getResource("examples.yaml"));
//设置spout
config.put(Configuration.SpoutLocalTextFile, classLoader.getResource("dol_smart").getPath());
config.put(Configuration.SpoutGeneratorClass, "com.pplive.pike.generator.LocalTextFileSpoutGenerator");
contextBuilder = new PikeContextBuilder(config);
//初始化数据源和结果输出地
contextBuilder.withMetaDataProvider(MyRawMetaDataProvider.class);
contextBuilder.withOutput(ConsoleOutput.class, "local");
//设置
String topologyName = "sm_live_vv_5s";
String sql = "withperiod 5s select channel, count(*) as vv from dol_smart group by channel";
contextBuilder.withSql(sql).withTopologyName(topologyName);
//buid
PikeContext context = contextBuilder.build();
PikeContext构造完成后,就可以与storm进行交互了。
context.validateSQLSyntax(); //检查是否哟语法错误
context.explain(); //显示sql执行计划
context.display(); //显示生成的topology
context.submit(); //提交topology
至此,通过sql提交topology的过程就已完成,针对不同的数据源和结果sink设置不同的参数,此外,用户也可以实现自己的spout和output,以便于适配对应的数据格式和目的地。