有趣的问题。我在同一条轨道上。
首先你关于 MLlib 的问题。我假设您指的是Apache Spark MLlib,它是 Apache Spark 之上的机器学习 (ML) 实现。所以我的结论是:您希望使用基于Titan / Cassandra的图形数据库中的数据来运行 ML 算法,以实现聚类和分类等目的。请注意,您还可以使用 spidy 提到的 Page Rank 等图形处理算法在您的 Titan/Cassandra 图形数据库上进行聚类等操作。换句话说:当您的起点是图形数据库时,您不需要 ML 进行聚类。
Apache Spark MLlib 似乎是面向未来的并得到广泛支持,他们最近的公告是关于新的 ML 算法,尽管另一个 Apache ML 项目Apache Mahout在支持的 ML 算法的数量方面更加成熟。Apache Mahout 也采用了 Apache Spark 作为他们的数据存储层,所以我在这篇文章中提到了它。除了内存计算之外,Apache Spark 还提供上述用于机器学习的 MLlib、类似于Spark 上的Hive的Spark SQL、GraphX(如 spidy 所解释的图形处理系统)和用于处理流数据的Spark Streaming 。
我认为 Apache Spark 本身是一个逻辑数据层,表示为存储层(如 Cassandra、Hadoop/Hcatalog 和 HBase)之上的 RDD(弹性分布式数据集)。Apache Spark 提供了一个到 Cassandra 的连接器。请注意,RDD 是不可变的,您不能使用 Spark 更改数据,您只能在 Spark 中处理和分析数据。关于 Apache Spark 逻辑存储层 RDD:您可以将 RDD 作为旧 SQL 时代的视图进行比较,RDD 为您提供了一个视图,例如 HBase 的 Cassandra 中的表。另请注意,Apache Spark 为 3 种开发环境提供了一个 API:Scala、Java 和 Python。
Apache Giraph也是一个图形处理工具集,功能等同于 Apache Spark GraphX。Apache Giraph 使用 Hadoop 作为数据存储层。您正在使用 Titan/Cassandra,因此当您选择 Apache Giraph 作为解决方案时,您可能会输入数据迁移任务。其次,您以一个关于使用 MLlib 和 Apache Giraph 不是 ML 解决方案的 ML 的问题开始您的帖子。
您关于 Giraph 和 Gremlin 的结论是不正确的:尽管两者都使用图形数据库,但它们并不相同。Giraph 是 spidy 解释的图形处理解决方案。使用 Giraph,您可以执行图分析算法,例如 Page Rank,例如谁拥有最多的关注者,而Gremlin用于遍历,例如使用实体(顶点)之间的复杂关系(边)查询图数据库,获取顶点和边的结果集特性。