- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 list.txt 的 .txt 文件,其中包含格式为源和目标 URL 的列表
google.de/2011/10/Extract-host link.de/2011/10/extact-host
facebook.de/2014/11/photos facebook.de/2014/11/name.jpg
community.cloudera.com/t5/ community.cloudera.com/t10/
facebook.de/2014/11/photos link.de/2011/10/extact-host
在这篇文章的帮助下,How to create a VertexId in Apache Spark GraphX using a Long data type?我尝试创建节点和边,例如:
val test = sc.textFile("list.txt") //running
val arrayForm = test.map(_.split("\t")) // running
val nodes: RDD[(VertexId, Option[String])] = arrayForm.flatMap(array => array).
map((_.toLong None))
val edges: RDD[Edge[String]] = arrayForm.
map(line => Edge(line(0), line(1), ""))
这里的问题是我真的不知道如何从字符串数据类型创建 VertexId 和类似的边。请让我知道如何解决这个问题。
最佳答案
答案是散列。由于您的 VertexID 是字符串,您可以使用 MurmurHash3
对它们进行哈希处理,制作图表,做您想做的事,然后将哈希值与原始字符串匹配。
示例代码
package com.void
import org.apache.spark._
import org.apache.spark.rdd.RDD
import org.apache.spark.graphx.Graph
import org.apache.spark.graphx.VertexId
import scala.util.hashing.MurmurHash3
object Main {
def main( args: Array[ String ] ): Unit = {
val conf =
new SparkConf()
.setAppName( "SO Spark" )
.setMaster( "local[*]" )
.set( "spark.driver.host", "localhost" )
val sc = new SparkContext( conf )
val file = sc.textFile("data/pr_data.txt");
val edgesRDD: RDD[(VertexId, VertexId)] =
file
.map( line => line.split( "\t" ) )
.map( line => (
MurmurHash3.stringHash( line( 0 ).toString ), MurmurHash3.stringHash( line( 1 ).toString )
)
)
val graph = Graph.fromEdgeTuples( edgesRDD, 1 )
// graph.triplets.collect.foreach( println )
// println( "####" )
val ranks =
graph
.pageRank( 0.0001 )
.vertices
ranks.foreach( println )
println( "####" )
val identificationMap =
file
.flatMap( line => line.split( "\t" ) )
.distinct
.map( line => ( MurmurHash3.stringHash( line.toString ).toLong, line ) )
identificationMap.foreach( println )
println( "####" )
val fullMap =
ranks
.join( identificationMap )
fullMap.foreach( println )
sc.stop()
}
}
结果
(-1578471469,1.2982456140350878)
(1547760250,0.7017543859649124)
(1657711982,1.0000000000000002)
(1797439709,0.7017543859649124)
(996122257,0.7017543859649124)
(-1127017098,1.5964912280701753)
####
(1547760250,community.cloudera.com/t5/)
(-1127017098,link.de/2011/10/extact-host)
(1657711982,facebook.de/2014/11/name.jpg)
(1797439709,facebook.de/2014/11/photos)
(-1578471469,community.cloudera.com/t10/)
(996122257,google.de/2011/10/Extract-host)
####
(-1578471469,(1.2982456140350878,community.cloudera.com/t10/))
(1797439709,(0.7017543859649124,facebook.de/2014/11/photos))
(1547760250,(0.7017543859649124,community.cloudera.com/t5/))
(996122257,(0.7017543859649124,google.de/2011/10/Extract-host))
(1657711982,(1.0000000000000002,facebook.de/2014/11/name.jpg))
(-1127017098,(1.5964912280701753,link.de/2011/10/extact-host))
您可以通过将哈希 ID 映射出来从 RDD 中删除它们,但我相信 PageRank 不是您的最终目标,因此您稍后可能需要它们。
关于scala - PageRank 使用 GraphX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48250912/
我想知道我可以对具有不同类型顶点的 GraphX 图进行建模吗?假设我有以下实体:产品、买方、卖方。我想形成一个以这些实体为顶点的图结构。 (例如:以图形方式显示卖家出售和买家购买的产品。) Grap
我有一个大图(几百万个顶点和边)。我想删除所有没有出边的顶点(和边)。我有一些有效的代码,但速度很慢,我需要多次执行。我确信我可以使用一些现有的 GraphX 方法来使其更快。 这是我的代码。 val
我有一个名为 list.txt 的 .txt 文件,其中包含格式为源和目标 URL 的列表 google.de/2011/10/Extract-host link.de/2011/10/e
在 GraphX 中,有没有办法检索特定长度路径上的所有节点和边? 更具体地说,我想获得从 A 到 B 的所有 10 步路径。对于每条路径,我想获取节点和边的列表。 谢谢。 最佳答案 免责声明:这仅用
我正在尝试计算 spark graphx 图中的节点值总和。简而言之,图是一棵树,顶部节点(根)应该对所有子节点及其子节点求和。我的图实际上是一棵树,看起来像这样,预期总和值应为 1850 :
我无法处理具有 230M 边的图形。我克隆了 apache.spark,构建了它,然后在集群上进行了尝试。 我使用 Spark 独立集群: -5 machines (each has 12 cores
我在玩graphx。我已经建立了一个图表 我正在尝试更新关系的权重, import org.apache.spark.rdd.RDD import org.apache.spark.graphx._
是否可以在运行时查询 GraphX?或者必须编译和部署这些查询? 如果是这样,是否有任何东西可以与 GraphX 的 Cypher 等价? 谢谢 最佳答案 是的,这是可能的,但你必须看到 spark
我可以使用 vertexRDD 构建图表和一个 edgeRDD通过 GraphX API,没问题。 IE。: val graph: Graph[(String, Int), Int] = Graph(
我使用 Spark graphX 创建了一个图,其中每个顶点都直接连接到图的每个其他顶点,即完整图。如果有人可以针对此类情况提出良好的分区策略或任何实现自定义分区策略的想法,请提供。 我有 100 万
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我正在尝试使用连接的组件,但遇到缩放问题。我的这是我所拥有的 - // get vertices val vertices = stage_2.flatMap(x => GraphUtil.getVe
Spark 版本 1.6.1 创建 Edge 和 Vertex RDD val vertices_raw = sqlContext.read.json("vertices.json.gz") val
我正在尝试实现 topological sort使用 Spark's GraphX图书馆。 这是我到目前为止编写的代码: MyObject.scala import java.util.ArrayLi
我有一个 Spark Graphx 图,我想检查两个顶点之间是否存在边。 在 Spark Graphx 中执行此操作的首选方法是什么? 更具体地说,我想计算一个列表中所有顶点之间的所有边到另一个列表中
我在 Spark 中创建了一个 GraphFrame,该图目前如下所示: 基本上,会有很多这样的子图,其中每个子图都将彼此断开。给定一个特定的节点 ID,我想在子图中找到所有其他节点。例如,如果给定节
我正在从 gz 创建一个图表压缩 json edge 的文件和 vertices类型。 我已将文件放在 dropbox 文件夹中 here 我加载并映射这些 json记录创建 vertices和 ed
我尝试使用 link 中的代码找到从单个源到 n 个顶点的最短路径 val graph: Graph[Long, Double] = GraphGenerators.logNormalGraph(
刚刚开始我对图形处理方法和工具的探索。我们基本上所做的 - 计算一些标准指标,例如页面排名、聚类系数、三角形计数、直径、连接性等。过去对 Octave 很满意,但是当我们开始处理具有 10^9 个节点
我想知道GraphX对Graph的内部遍历。 RDDS是基于顶点和边的遍历还是顺序遍历?例如给定一个图的顶点,我只想获取它的邻居而不是所有顶点的邻居?在这种情况下,GraphX 将如何遍历图形。 感谢
我是一名优秀的程序员,十分优秀!