当前位置: 首页 > 知识库问答 >
问题:

打印自Apache Storm Bolt

冯阳云
2023-03-14
public class ReportBolt extends BaseRichBolt {

  private static final long serialVersionUID = 6102304822420418016L;

  private Map<String, Long> counts;
  private OutputCollector collector;

  @Override @SuppressWarnings("rawtypes")
  public void prepare(Map stormConf, TopologyContext context, OutputCollector outCollector) {
    collector = outCollector;
    counts = new HashMap<String, Long>();
  }

  @Override

  public void declareOutputFields(OutputFieldsDeclarer declarer) {
    // terminal bolt = does not emit anything
  }

  @Override
  public void execute(Tuple tuple) {   
    System.out.println("HELLO " + tuple);
  }

  @Override
  public void cleanup() {
    System.out.println("HELLO FINAL");
  }
}

简而言之,为什么我的println没有显示在工作日志中?

编辑

public class AckedTopology {

  private static final String SPOUT_ID = "monitoring_test_spout";
  private static final String REPORT_BOLT_ID = "acking-report-bolt";
  private static final String TOPOLOGY_NAME = "monitoring-topology";

  public static void main(String[] args) throws Exception {
    int numSpoutExecutors = 1;

    KafkaSpout kspout = buildKafkaSpout();
    ReportBolt reportBolt = new ReportBolt();

    TopologyBuilder builder = new TopologyBuilder();

    builder.setSpout(SPOUT_ID, kspout, numSpoutExecutors);
    builder.setBolt(REPORT_BOLT_ID, reportBolt);

    Config cfg = new Config();
    StormSubmitter.submitTopology(TOPOLOGY_NAME, cfg, builder.createTopology());
  }

  private static KafkaSpout buildKafkaSpout() {
    String zkHostPort = "URL";
    String topic = "TOPIC";

    String zkRoot = "/brokers";
    String zkSpoutId = "monitoring_test_spout_id";
    ZkHosts zkHosts = new ZkHosts(zkHostPort);

    SpoutConfig spoutCfg = new SpoutConfig(zkHosts, topic, zkRoot, zkSpoutId);
    KafkaSpout kafkaSpout = new KafkaSpout(spoutCfg);
    return kafkaSpout;
  }
}

共有1个答案

颛孙凯定
2023-03-14

你的螺栓没有用链子拴在壶嘴上。你需要使用Storm的分组才能做到这一点..用这样的东西

    builder.setBolt(REPORT_BOLT_ID, reportBolt).shuffleGrouping(SPOUT_ID);

setbolt通常返回InputDeclarer对象。在您的例子中,通过指定shufflegrouping(SPOUT_ID),您告诉storm您有兴趣使用id为report_bolt_id组件发出的所有元组。

阅读更多关于流分组的内容,并根据您的需要选择一个。

 类似资料:
  • 使用 Photoshop,您可以打印任何兼容的 3D 模型,而无需担心 3D 打印机的限制。在准备打印时,Photoshop 会自动使 3D 模型防水。Photoshop 还会生成必要的支撑结构(支架和底座),以确保您的 3D 打印能够成功完成。 准备打印 3D 对象 选择“窗口”>“工作区”>“3D”以切换到 3D 工作区。 在 Photoshop 中打开 3D 模型。如果需要,请在打开 3D

  • 设置打印方向 - 横向 设置打印方向 - 纵向

  •   最后,我们要给绘图程序增加打印和打印预览功能。我们希望文档分两页打印,第一页为封面,打印文档名字。第二页输出文档内容,并在页眉上打印文档名字。虽然AppWizard已经自动生成了打印和打印预览的代码,但是许多情况下,并不能符合要求。 这是因为: 1.打印机和窗口(屏幕)显示的分辨率不同:打印机的分辨率用每英寸多少个点来描述,屏幕分辨率用单位面积的像素点来表示。对于同样的Arial字体下的一个字

  • 我们希望打印到连接在apache运行的POS打印机上。由于应用程序的设计和部署,打印应该从服务器上完成(它应该检测订单并发送到不同的打印机和不同格式的打印...账单,厨房订单,等等...)。出于这个原因和其他原因(例如,从iPad访问应用程序),我们放弃了像QZ-Print applet这样的选项,并需要直接在服务器端打印。 提前谢了。

  • 关于 PPD文件 PPD 文件( PostScript Printer Description 文件)自定您的特定 PostScript 打印机驱动程序的行为。这个文件包含有关输出设备的信息,其中包括打印机驻留字体、可用介质大小及方向、优化的网频、网角、分辨率以及色彩输出功能。打印之前设置正确的 PPD 非常重要。通过选择与 PostScript 打印机或照排机相应的 PPD,可以使用可用的输出设

  • Sketch 最多只有很基本的打印支持。目前我们的注意力集中在产生基于屏幕的图像,不过在实际工作中你可能偶而需要进行打印。 如果选择“文件 > 打印(File > Print)”菜单,你首先需要告诉 Sketch 想打印哪一个画板或者切片。如果还没有创建切片, Sketch 会提示你先创建一个切片。 目前 Sketch 还不支持 DPI (每英寸点数,打印机、扫描仪等的清晰度参数)设置,也许在未来