使用Spark GraphX 如何从文件中构建一个图

qbyjxg001 2014-12-15 07:56:20
我最近在学GraphX,是用scala写的,本身对scala的语法不是太熟悉,Graphx内部的函数勉强能看懂一些,现在需要用这个做一些graph pattern matching,不知道有没有哪位大侠写过graphx,发些例子给我看一下,不甚感激!
目前的问题是如何从文件中(从数据库中也行)构建一个graph。。。
...全文
1740 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 31 at getGraphFromFiles$.main(getGraphFromFiles.scala:39) 这不是提示了吗? var j = 0 while(linesE.hasNext){ val ee = lines.next().split(" ") edgeArr(i) = Edge(ee(3).toLong , ee(5).toLong, ee(15).toDouble) j = j+1 } edgeArr(i) 这里应该是 degeArr(j)
qbyjxg001 2014-12-15
  • 打赏
  • 举报
回复

import org.apache.spark._
import org.apache.spark.SparkContext
import org.apache.spark.graphx._
import org.apache.spark.graphx.Graph
import org.apache.spark.graphx.util.GraphGenerators
import org.apache.spark.rdd.RDD

import scala.io.Source

object getGraphFromFiles {
  def main(args: Array[String]): Unit ={
    val sc = new SparkContext("local", "Spark Graphx")

    val vertexArr = new Array[(Long,String)](31)
    val edgeArr = new Array[Edge[Double]](577)

    val sourceV = Source.fromFile("/home/liu/data/ada_graph_find5_14_34.txt")
    val lines = sourceV.getLines()



    var i = 0
    while(lines.hasNext){
      val pp = lines.next().split(" ")
      vertexArr(i) = (pp(1).toLong , pp(3))
      i = i+1
    }
    println(vertexArr.length)

    val sourceE = Source.fromFile("/home/liu/data/ada_graph_find5_14_34.txt")
    val linesE = sourceE.getLines()

    var j = 0
    while(linesE.hasNext){
      val ee = lines.next().split(" ")
      edgeArr(i) = Edge(ee(3).toLong , ee(5).toLong, ee(15).toDouble)
      j = j+1
    }

    //创建点RDD
    val users: RDD[(VertexId, String)] = sc.parallelize(vertexArr)

    //创建边RDD
    val relationships: RDD[Edge[Double]] = sc.parallelize(edgeArr)

    //定义一个默认用户,避免有不存在用户的关系
    val defaultUser = (1.0)

    //构造Graph
    val graph = Graph(users, relationships)

    //输出Graph的信息
    graph.vertices.collect().foreach(println(_))
    graph.triplets.map(triplet => triplet.srcAttr + "----->" + triplet.dstAttr + "    attr:" + triplet.attr)
      .collect().foreach(println(_))

  }

}


我的代码是这样写的,但老是报错,能帮我看看吗? 报错信息是这样的: /home/liu/program/jdk1.7.0_71/bin/java -Didea.launcher.port=7532 -Didea.launcher.bin.path=/usr/local/idea/idea-IC-139.225.3/bin -Dfile.encoding=UTF-8 -classpath /home/liu/program/jdk1.7.0_71/jre/lib/jce.jar:/home/liu/program/jdk1.7.0_71/jre/lib/deploy.jar:/home/liu/program/jdk1.7.0_71/jre/lib/management-agent.jar:/home/liu/program/jdk1.7.0_71/jre/lib/charsets.jar:/home/liu/program/jdk1.7.0_71/jre/lib/rt.jar:/home/liu/program/jdk1.7.0_71/jre/lib/jsse.jar:/home/liu/program/jdk1.7.0_71/jre/lib/resources.jar:/home/liu/program/jdk1.7.0_71/jre/lib/jfr.jar:/home/liu/program/jdk1.7.0_71/jre/lib/jfxrt.jar:/home/liu/program/jdk1.7.0_71/jre/lib/plugin.jar:/home/liu/program/jdk1.7.0_71/jre/lib/javaws.jar:/home/liu/program/jdk1.7.0_71/jre/lib/ext/zipfs.jar:/home/liu/program/jdk1.7.0_71/jre/lib/ext/localedata.jar:/home/liu/program/jdk1.7.0_71/jre/lib/ext/dnsns.jar:/home/liu/program/jdk1.7.0_71/jre/lib/ext/sunpkcs11.jar:/home/liu/program/jdk1.7.0_71/jre/lib/ext/sunjce_provider.jar:/home/liu/program/jdk1.7.0_71/jre/lib/ext/sunec.jar:/home/liu/IdeaProjects/HelloScala/target/scala-2.11/classes:/usr/local/spark/spark-1.0.0-bin-hadoop1/lib/spark-assembly-1.0.0-hadoop1.0.4.jar:/usr/lib/scala/scala-2.10.4/lib/scala-library.jar:/usr/lib/scala/scala-2.10.4/lib/scala-swing.jar:/usr/lib/scala/scala-2.10.4/lib/scala-actors-migration.jar:/usr/lib/scala/scala-2.10.4/lib/scala-reflect.jar:/usr/lib/scala/scala-2.10.4/lib/scala-actors.jar:/usr/local/idea/idea-IC-139.225.3/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain getGraphFromFiles 14/12/15 19:50:08 INFO SecurityManager: Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 14/12/15 19:50:08 INFO SecurityManager: Changing view acls to: liu 14/12/15 19:50:08 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(liu) 14/12/15 19:50:08 INFO Slf4jLogger: Slf4jLogger started 14/12/15 19:50:08 INFO Remoting: Starting remoting 14/12/15 19:50:09 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://spark@Master:42340] 14/12/15 19:50:09 INFO Remoting: Remoting now listens on addresses: [akka.tcp://spark@Master:42340] 14/12/15 19:50:09 INFO SparkEnv: Registering MapOutputTracker 14/12/15 19:50:09 INFO SparkEnv: Registering BlockManagerMaster 14/12/15 19:50:09 INFO DiskBlockManager: Created local directory at /tmp/spark-local-20141215195009-6ee6 14/12/15 19:50:09 INFO MemoryStore: MemoryStore started with capacity 1050.6 MB. 14/12/15 19:50:09 INFO ConnectionManager: Bound socket to port 60274 with id = ConnectionManagerId(Master,60274) 14/12/15 19:50:09 INFO BlockManagerMaster: Trying to register BlockManager 14/12/15 19:50:09 INFO BlockManagerInfo: Registering block manager Master:60274 with 1050.6 MB RAM 14/12/15 19:50:09 INFO BlockManagerMaster: Registered BlockManager 14/12/15 19:50:09 INFO HttpServer: Starting HTTP Server 14/12/15 19:50:09 INFO HttpBroadcast: Broadcast server started at http://10.10.64.194:60775 14/12/15 19:50:09 INFO HttpFileServer: HTTP File server directory is /tmp/spark-5d11a1c0-6233-402d-afa8-65b3b9fb6556 14/12/15 19:50:09 INFO HttpServer: Starting HTTP Server 14/12/15 19:50:09 INFO SparkUI: Started SparkUI at http://Master:4040 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 31 at getGraphFromFiles$.main(getGraphFromFiles.scala:39) at getGraphFromFiles.main(getGraphFromFiles.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
  • 打赏
  • 举报
回复
可以参考: http://blog.csdn.net/fighting_one_piece/article/details/39668267 http://blog.csdn.net/fighting_one_piece/article/details/39673193
本资源为网页,不是PDF Apache Spark 2.0.2 文文档 Spark 概述 编程指南 快速入门 Spark 编程指南 概述 Spark 依赖 Spark 的初始化 Shell 的使用 弹性分布式数据集(RDDS) 并行集合 外部数据集 RDD 操作 RDD 持久化 共享变量 Broadcast Variables (广播变量) Accumulators (累加器) 部署应用到集群 使用 Java / Scala 运行 spark Jobs 单元测试 Spark 1.0 版本前的应用程序迁移 下一步 Spark Streaming Spark Streaming 概述 一个简单的示例 基本概念 依赖 初始化 StreamingContext Discretized Streams(DStreams)(离散化流) Input DStreams 和 Receivers DStreams 上的 Transformations(转换) DStreams 上的输出操作 DataFrame 和 SQL 操作 MLlib 操作 缓存 / 持久化 CheckPointing 累加器和广播变量 应用程序部署 监控应用程序 性能 降低批处理的时间 设置合理的批处理间隔 内存 容错语义 迁移指南(从 0.9.1 或者更低版本至 1.x 版本) 快速跳转 Kafka 集成指南 DataFrames,Datasets 和 SQL Spark SQL 概述 SQL Datasets 和 DataFrames Spark SQL 入门指南 起始点 : SparkSession 创建 DataFrame 无类型 Dataset 操作(aka DataFrame 操作) 以编程的方式运行 SQL 查询 创建 Dataset RDD 的互操作性 数据源 通用的 Load/Save 函数 Parquet文件 JSON Datasets Hive 表 JDBC 连接其它数据库 故障排除 性能调优 缓存数据到内存 其它配置选项 分布式 SQL引擎 运行 Thrift JDBC/ODBC 运行 Spark SQL CLI 迁移指南 从 Spark SQL 1.6 升级到 2.0 从 Spark SQL 1.5 升级到 1.6 从 Spark SQL 1.4 升级到 1.5 从 Spark SQL 1.3 升级到 1.4 从 Spark SQL 1.0~1.2 升级到 1.3 兼容 Apache Hive 参考 数据类型 NaN 语义 Structured Streaming MLlib(机器学习) 机器学习库(MLlib)指南 ML Pipelines(ML管道) Extracting, transforming and selecting features(特征的提取,转换和选择) Classification and regression(分类和回归) Clustering(聚类) Collaborative Filtering(协同过滤) ML Tuning: model selection and hyperparameter tuning(ML调优:模型选择和超参数调整) Advanced topics(高级主题) MLlib:基于RDD的API Data Types - RDD-based API(数据类型) Basic Statistics - RDD-based API(基本统计) Classification and Regression - RDD-based API(分类和回归) Collaborative Filtering - RDD-based API(协同过滤) Clustering - RDD-based API(聚类 - 基于RDD的API) Dimensionality Reduction - RDD-based API(降维) Feature Extraction and Transformation - RDD-based API(特征的提取和转换) Frequent Pattern Mining - RDD-based API(频繁模式挖掘) Evaluation metrics - RDD-based API(评估指标) PMML model export - RDD-based API(PMML模型导出) Optimization - RDD-based API(最) GraphX形处理) Spark R 部署 集群模式概述 提交应用 Spark Standalone 模式 Spark on Mesos Spark on YARN Spark on YARN 上运行 准备 Spark on YARN 配置 调试应用 Spark 属性 重要提示 在一个安全的集群运行 用 Apache Oozie 来运行应用程序 Kerberos 故障排查 Spark 配置 Spark 监控 指南 作业调度 Spark 安全 硬件配置 构建 Spark

1,261

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧