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



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

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

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

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

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

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

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

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

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

最新更新