【问题标题】:Is loading and querying of structured data other than HBASE possible in Apache Spark GraphX?在 Apache Spark GraphX 中是否可以加载和查询除 HBASE 之外的结构化数据?
【发布时间】:2015-03-15 14:46:34
【问题描述】:

所以我设法使用 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 怎么样?

【问题讨论】:

  • 你的意思是 GraphX 而不是 SparkX?
  • 谢谢..我写这个问题已经很晚了..我会编辑这个问题。你有答案吗? :)

标签: apache-spark apache-spark-sql


【解决方案1】:

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

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

如果它对您有帮助,您可以在我在这里回答prior question 时编写的一些代码中看到我using this approach。我实际上并没有建议您如此多地使用开发人员 API,而且您将如履薄冰,但这可能是您需要做的。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 2017-12-07
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多