首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

apache -从sql表创建VertexRDD

Apache Spark是一个开源的大数据处理框架,提供了分布式计算和分析的能力。Spark GraphX是Spark提供的图计算库,用于处理图数据。

在Spark GraphX中,可以使用SQL表来创建VertexRDD,下面是从SQL表创建VertexRDD的步骤:

  1. 首先,确保你已经在Spark中创建了一个SparkSession对象,用于执行SQL操作。
  2. 在SparkSession中,使用spark.sql方法执行SQL查询,从数据库中获取相关数据。例如,假设我们有一个名为"person"的表,包含了人的信息,可以执行如下的SQL查询语句:
代码语言:txt
复制
val vertexDF = spark.sql("SELECT id, name FROM person")

这将返回一个DataFrame,包含两列,分别是"id"和"name"。

  1. 使用DataFrame的rdd方法将DataFrame转换为RDD。
代码语言:txt
复制
val vertexRDD = vertexDF.rdd
  1. 接下来,我们需要将RDD转换为VertexRDD。在这之前,需要定义一个函数来从RDD的每一行数据中提取出顶点的唯一标识符(vertex id)和属性(vertex attribute)。假设"id"列是唯一标识符,"name"列是属性,我们可以定义如下的函数:
代码语言:txt
复制
def extractVertex(row: Row): (Long, String) = {
  val id = row.getAs[Long]("id")
  val name = row.getAs[String]("name")
  (id, name)
}
  1. 使用map方法,将提取函数应用于RDD的每一行数据,得到一个包含了顶点标识符和属性的元组的RDD。
代码语言:txt
复制
val vertexTupleRDD = vertexRDD.map(extractVertex)
  1. 最后,使用Graph.fromEdgeTuples方法将顶点元组RDD和边RDD(如果有的话)创建成一个Graph对象。
代码语言:txt
复制
val graph = Graph.fromEdgeTuples(edgeTupleRDD, vertexTupleRDD)

至此,我们就成功地从SQL表创建了一个包含顶点的VertexRDD,并将其用于构建图计算任务。

Apache Spark相关链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

大数据技术之_19_Spark学习_05_Spark GraphX 应用解析 + Spark GraphX 概述、解析 + 计算模式 + Pregel API + 图算法参考代码 + PageRank

Spark GraphX 是一个分布式图处理框架,它是基于 Spark 平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求。那么什么是图,都计算些什么?众所周知社交网络中人与人之间有很多关系链,例如 Twitter、Facebook、微博和微信等,数据中出现网状结构关系都需要图计算。   GraphX 是一个新的 Spark API,它用于图和分布式图(graph-parallel)的计算。GraphX 通过引入弹性分布式属性图(Resilient Distributed Property Graph): 顶点和边均有属性的有向多重图,来扩展Spark RDD。为了支持图计算,GraphX 开发了一组基本的功能操作以及一个优化过的 Pregel API。另外,GraphX 也包含了一个快速增长的图算法和图 builders 的集合,用以简化图分析任务。   从社交网络到语言建模,不断增长的数据规模以及图形数据的重要性已经推动了许多新的分布式图系统的发展。通过限制计算类型以及引入新的技术来切分和分配图,这些系统可以高效地执行复杂的图形算法,比一般的分布式数据计算(data-parallel,如 spark、MapReduce)快很多。

04
  • SparkSql学习笔记一

    1.简介     Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。     为什么要学习Spark SQL?     我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL也支持从Hive中读取数据。 2.特点     *容易整合     *统一的数据访问方式     *兼容Hive     *标准的数据连接 3.基本概念     *DataFrame         DataFrame(表) = schema(表结构) + Data(表结构,RDD)             就是一个表 是SparkSql 对结构化数据的抽象             DataFrame表现形式就是RDD         DataFrame是组织成命名列的数据集。它在概念上等同于关系数据库中的表,但在底层具有更丰富的优化。DataFrames可以从各种来源构建,         DataFrame多了数据的结构信息,即schema。         RDD是分布式的Java对象的集合。DataFrame是分布式的Row对象的集合。         DataFrame除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化     *Datasets         Dataset是数据的分布式集合。Dataset是在Spark 1.6中添加的一个新接口,是DataFrame之上更高一级的抽象。它提供了RDD的优点(强类型化,使用强大的lambda函数的能力)以及Spark SQL优化后的执行引擎的优点。一个Dataset 可以从JVM对象构造,然后使用函数转换(map, flatMap,filter等)去操作。 Dataset API 支持Scala和Java。 Python不支持Dataset API。 4.创建表 DataFrame     方式一 使用case class 定义表         val df = studentRDD.toDF     方式二 使用SparkSession直接生成表         val df = session.createDataFrame(RowRDD,scheme)     方式三 直接读取一个带格式的文件(json文件)         spark.read.json("") 5.视图(虚表)     普通视图         df.createOrReplaceTempView("emp")             只对当前对话有作用     全局视图         df.createGlobalTempView("empG")             在全局(不同会话)有效             前缀:global_temp 6.操作表:     两种语言:SQL,DSL      spark.sql("select * from t ").show     df.select("name").show

    03

    个推基于Flink SQL建设实时数仓实践

    作为一家数据智能企业,个推在服务垂直行业客户的过程中,会涉及到很多数据实时计算和分析的场景,比如在服务开发者时,需要对App消息推送的下发数、到达数、打开率等后效数据进行实时统计;在服务政府单位时,需要对区域内实时人口进行统计和画像分析。为了更好地支撑大数据业务发展,个推也建设了自己的实时数仓。相比Storm、Spark等实时处理框架,Flink不仅具有高吞吐、低延迟等特性,同时还支持精确一次语义(exactly once)、状态存储等特性,拥有很好的容错机制,且使用门槛低、易上手、开发难度小。因此,个推主要基于Flink SQL来解决大部分的实时作业需求。

    04
    领券