【问题标题】:What is the purpose of Fields class in Apache StormApache Storm 中 Fields 类的用途是什么
【发布时间】:2016-11-09 01:13:53
【问题描述】:

我正在浏览 Apache Storm 的示例之一。 以下是 Bolt 类的 sn-p
public void declareOutputFields(OutputFieldsDeclarer 声明者) {
declarer.declare(new Fields("word"));
}

Declarer 用于表示 Bolt 将发出的字段类型。那么上面的语法在说“ new Fields("word") ”时是什么意思。

【问题讨论】:

    标签: apache-storm


    【解决方案1】:

    它定义了输出元组的模式。即,一个元组有多少个属性以及每个属性的名称。

    Fields("word") 定义了一个具有名为word 的单个属性的模式。因此,如果您调用collector.emit(new Values(...)),参数列表必须包含单个值。

    在接收端(即消耗输出流的螺栓),您可以通过索引或名称访问属性;该名称是生产者通过Fields 声明的名称。

    在您的示例中,消费者可以通过input.getX(0)input.getXByName("word") 访问属性。

    【讨论】:

    • 所以你的意思是——这里的“词”没有任何意义。我们可以使用任何字符串而不是单词,它应该可以工作。我唯一需要注意的是字符串“word”在字段(“word”)和新值(“word”)中应该是相同的。我说的对吗?
    • 是的,差不多。您可以为属性指定任何名称。虽然“word”是属性的名称,但new Values("actualWord") 为属性“word”创建了一个属性值为“actualWord”的新元组。如果您通过接收器螺栓中的索引访问属性,则属性的名称不重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多