在 Apache Spark GraphX 中是否可以加载和查询 HBASE 以外的结构化数据?

Is loading and querying of structured data other than HBASE possible in Apache Spark GraphX?

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

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

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

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

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

唉,Row 有一些缺点。它被标记为 "developer API",并且记录的内容与您期望的一样好。它也不是最友好的使用方式,因为您不能按名称查找字段,但必须按位置查找——基本上它只是扩展 Seq[Any]。您可以根据用于提取它们的查询来猜测字段的位置,或者您可以通过调用 [=17] 从 SchemaRDD 中获取架构的表示形式(Seq[StructField]) =] 方法。您在架构中找到您想要的字段,它将位于行中的相应位置!

如果对您有帮助,请看我using this approach in some code I wrote while answering a prior question。实际上,我并不是要 推荐 你大量使用开发人员 API,你会如履薄冰,但这可能是你需要做的。

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

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