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,以便于适配对应的数据格式和目的地。