1

所以我设法使用 Pig XMLloader 将 2 个代表顶点和边缘数据的 XML 文件加载到 Hadoop/HDFS 中,并从中创建了 Hive 表。

我想使用这个顶点和边缘数据来创建一个基于 Spark GraphX 的图形数据库。我从 Spark GraphX 文档中了解到,除了平面文件之外,HBASE 表还可以用于获取 Spark GraphX。我找不到任何关于使用其他结构化大数据源(例如 Hive)的 Spark GraphX 文档。

但是,在 SparkSQL 中,支持 Hive 作为结构化数据的来源。SparkSQL 也支持 JSON 结构化数据。

SparkSQL 中对 Hive 的支持是否也意味着 Spark GraphX 原生支持使用 HiveContext 的 Hive?使用 JSON 源文件以 .jsonFile(name.json) 作为源来创建 VertexRDD 怎么样?

4

2 回答 2

0

我能看到的唯一解决方案是SchemaRDD使用您描述的一种方法创建一个或多个 s,然后利用SchemaRDDextends的事实RDD[Row]。然后,您可以使用通常的 Spark 和 GraphX 方法将其转换为您想要的任何内容。

唉,Row有一些缺点。它被标记为“开发人员 API”,并且记录在案,并且会导致您期望。它也不是最友好的使用方法,因为您不能按名称查找字段,但必须按位置进行 - 基本上它只是 extends Seq[Any]。您可以根据用于提取字段的查询来猜测字段的位置,也可以通过调用方法Seq[StructField]从 中获取模式 (a) 的表示。您在架构中找到您想要的字段,它将位于行中的相应位置!SchemaRDDschema

如果它对您有帮助,您可以在我在这里回答之前的问题时编写的一些代码中看到我使用这种方法。我实际上并没有建议您大量使用开发人员 API,您将如履薄冰,但这可能是您需要做的。

于 2015-01-21T17:33:42.363 回答
0

谢谢斯皮罗。SchemaRDD 确实是要走的路。

我使用 HortonWorks 发行版将 Apache Spark 升级到了 1.2 版。在此发行版中,Spark hiveContext 支持 Hive 表,使用 SchemaRDD 访问 HCatalog 中的表。

于 2015-01-31T09:28:06.323 回答