【问题标题】:Hadoop and Cassandra processing rows in sorted orderHadoop 和 Cassandra 按排序顺序处理行
【发布时间】:2016-12-20 04:52:17
【问题描述】:

我想用字符串列表填充 Cassandra 数据库,然后使用 Hadoop 处理这些字符串。我想要做的是使用 Hadoop 集群按顺序遍历所有字符串,并记录每个字符串之间有多少重叠,以便找到最长的公共子字符串。

我的问题是,InputFormat 对象是否允许我按排序顺序读出数据,或者我的字符串是否会在集群中的每台机器上“随机”读出(根据 Cassandra 决定如何分配它们)? MapReduce 流程是否旨在自行处理每一行,而不会像我要求的那样连续查看两行?

【问题讨论】:

    标签: hadoop cassandra


    【解决方案1】:

    首先,映射器将按照从 InputFormat 中获取数据的顺序读取数据。我不是 Cassandra 专家,但我不希望这会按顺序排列。

    如果你想要排序顺序,你应该使用一个身份映射器(一个什么都不做的),它的输出键是字符串本身。然后它们将在传递到reduce步骤之前进行排序。但它变得有点复杂,因为你可以拥有多个减速器。只有一个 reducer,所有东西都是全局排序的。如果有多个,每个 reducer 的输入都会被排序,但跨 reducer 的输入可能不会被排序。也就是说,相邻的字符串可能不会进入同一个 reducer。您需要一个自定义分区器来处理它。

    最后,你提到你正在做最长的公共子串——你是在寻找每对字符串中最长的子串吗?在连续的字符串对中?在所有字符串中?这些可能性中的每一种都会影响您需要如何构建 MapReduce 作业。

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多