spark graphx从txt文件中读数据构建图

程序功能:导入顶点以及边的数据,生成边RDD和顶点RDD,构建图

import org.apache.spark._
import org.apache.spark.graphx._
// To make some of the examples work we will also need RDD
import org.apache.spark.rdd.RDD
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
// 字符串转码,解决乱码问题
import java.nio.charset.StandardCharsets

import scala.io.Source
import collection.mutable.ArrayBuffer

object SimpleApp {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)

    val vertexArr = new ArrayBuffer[(Long, String)]()
    val edgeArr = new ArrayBuffer[Edge[String]]()

    // 读入时指定编码
    val sourceV = Source.fromFile("/vagrant/dev_program/spark_test/graphx/python_process_guijing/zygj_vertice_attr.txt", "UTF-8")
    val lines = sourceV.getLines()

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

    val sourceE = Source.fromFile("/vagrant/dev_program/spark_test/graphx/python_process_guijing/zygj_edge_attr.txt", "UTF-8")
    val linesE = sourceE.getLines()

    while(linesE.hasNext){
        val ee = linesE.next().split("\t")
        edgeArr += Edge(ee(0).toLong, ee(1).toLong, ee(2))
    }

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

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

    // 定义一个默认用户,避免有不存在用户的关系
    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(_))

  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值