【问题标题】:Spark cassandra connector failed to support ByteOrderedParitioner?Spark cassandra 连接器无法支持 ByteOrderedParitioner?
【发布时间】:2019-02-27 00:36:49
【问题描述】:

我正在使用spark-cassandra-connector_2.11-2.0.0.jar 连接到 Cassandra(版本 2.1.9)。 Cassandra 的分区器是 `ByteOrderedParitioner'。

但是,当我提交 spark 驱动程序时,它显示: Exception in thread "main" java.lang.IllegalArgumentException: Unsupported partitioner: org.apache.cassandra.dht.ByteOrderedPartitioner.

源代码中似乎只支持“Murmur3Partitioner”和“RandomPartitioner”。

但 Hadoop 支持 ByteOrderedPartitioner。我想知道当我强制使用ByteOrderedPartitioner时如何解决它。

感谢您的帮助。

【问题讨论】:

    标签: apache-spark cassandra


    【解决方案1】:

    它不在 Spark 中,因为 没有人 应该不再使用 ByteOrderedPartitioner。这是因为它:

    A) 仅用于向后兼容。

    B) 它的创建(和后续使用)被广泛认为是一个的想法。

    这个问题已经讨论过了。在此处查看我对类似问题的回答:Cassandra ByteOrderedPartitioner

    我推荐你:

    • 使用Murmur3Partitioner 重建您的集群。
    • 或者构建一个集群,并使用原始数据加载它。
    • 找到构建原始集群的人并拍打他们。

    【讨论】:

    • 好吧,我在开玩笑说要打那个建造集群的人。可能是。至少,这应该是我的正式声明。
    • 我丢弃了Murmur3Partitioner,因为我发现节点之间摄取的数据量相差很大。但是ByteOrderedPartitioner 是加载平衡的不错选择,而且确实如此。我发现 Cassandra 的源代码中有 InputFormat 的实现,它同时支持Murmur3PartitionerByteOrderedPartitioner,它适用于 Hadoop 和 Spark。
    • 如果使用 Murmur 分区器分配的数据不是很好,则表明数据模型存在问题...
    • @Jenny.D Alex 提出了一个很好的观点,因为您的数据模型本身需要为良好的数据分布而设计。最重要的是,ByteOrderedPartitioner 已被弃用,将在某个时候从 Cassandra 中删除,并且在使用它时获得支持和帮助将非常困难(正如您所发现的那样)。
    猜你喜欢
    • 1970-01-01
    • 2015-09-04
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多