我正在尋找一種方法來可視化在Spark的Graphx中構建的圖形。就我所知,Graphx沒有任何可視化方法,所以我需要將Graphx中的數據導出到另一個圖形庫,但是我被卡在了這裏。我跑到這個網站:https://lintool.github.io/warcbase-docs/Spark-Network-Analysis/ 但它沒有幫助。我應該使用哪個庫以及如何導出圖。Graphx可視化
5
A
回答
6
所以,你可以從Manning | Spark GraphX in Action
做這樣的事情def toGexf[VD,ED](g:Graph[VD,ED]) : String = { "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<gexf xmlns=\"http://www.gexf.net/1.2draft\" version=\"1.2\">\n" + " <graph mode=\"static\" defaultedgetype=\"directed\">\n" + " <nodes>\n" + g.vertices.map(v => " <node id=\"" + v._1 + "\" label=\"" + v._2 + "\" />\n").collect.mkString + " </nodes>\n" + " <edges>\n" + g.edges.map(e => " <edge source=\"" + e.srcId + "\" target=\"" + e.dstId + "\" label=\"" + e.attr + "\" />\n").collect.mkString + " </edges>\n" + " </graph>\n" + "</gexf>" }
- 保存到gexf(圖形交換格式)的代碼,
- 使用linkurious.js中的GEXF插件來加載文件
1
則可以使用Gephi或從zeppelind3
。檢查D3.js In Action by Elijah Meeks
和Spark GraphX in Action by Michael S. Malak
給它一個去下面從飛艇中scala
和js
從grapxInAction借:
import org.apache.spark.graphx._
import scala.reflect.ClassTag
def drawGraph[VD:ClassTag,ED:ClassTag](g:Graph[VD,ED]) = {
val u = java.util.UUID.randomUUID
val v = g.vertices.collect.map(_._1)
println("""%html
<div id='a""" + u + """' style='width:960px; height:500px'></div>
<style>
.node circle { fill: gray; }
.node text { font: 10px sans-serif;
text-anchor: middle;
fill: white; }
line.link { stroke: gray;
stroke-width: 1.5px; }
</style>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
.var width = 960, height = 500;
var svg = d3.select("#a""" + u + """").append("svg")
.attr("width", width).attr("height", height);
var nodes = [""" + v.map("{id:" + _ + "}").mkString(",") + """];
var links = [""" + g.edges.collect.map(
e => "{source:nodes[" + v.indexWhere(_ == e.srcId) +
"],target:nodes[" +
v.indexWhere(_ == e.dstId) + "]}").mkString(",") + """];
var link = svg.selectAll(".link").data(links);
link.enter().insert("line", ".node").attr("class", "link");
var node = svg.selectAll(".node").data(nodes);
var nodeEnter = node.enter().append("g").attr("class", "node")
nodeEnter.append("circle").attr("r", 8);
nodeEnter.append("text").attr("dy", "0.35em")
.text(function(d) { return d.id; });
d3.layout.force().linkDistance(50).charge(-200).chargeDistance(300)
.friction(0.95).linkStrength(0.5).size([width, height])
.on("tick", function() {
link.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
node.attr("transform", function(d) {
return "translate(" + d.x + "," + d.y + ")";
});
}).nodes(nodes).links(links).start();
</script>
""")
}
相關問題
- 1. Apache Spark:保留GraphX中的自定義類:不可序列化?
- 2. 可視化基本可視化
- 3. GraphX-Spark:error graph.vertices.filter
- 4. GraphX VertexRDD NullPointerException
- 5. Apache Spark GraphX java.lang.ArrayIndexOutOfBoundsException
- 6. get vertexId graphx
- 7. 可視化Gephi
- 8. Groovy可視化
- 9. BPMB可視化
- 10. 可視化Raycaster
- 11. 可視化arraylist
- 12. 結合SpqrkSQL和GraphX
- 13. 火花sbt與graphx
- 14. GraphX Pagerank的實現
- 15. 使用GraphX實現有向圖作爲無向圖使用GraphX
- 16. 可視化點雲
- 17. ROS包可視化
- 18. 谷歌可視化
- 19. 圖形可視化
- 20. 音頻可視化
- 21. 可視化因素
- 22. 可視化矩陣
- 23. 可視化在python
- 24. 可視化羣集
- 25. 音樂可視化
- 26. 可視化在kibana
- 27. 程序可視化
- 28. 熱圖可視化
- 29. 可視化 - 的Tableau
- 30. Python NLTK可視化
你需要從圖的頂點和邊轉換成你所需要的格式。這是一個將DataFrame轉換爲Higcharts格式的回購。 https://github.com/knockdata/zeppelin-highcharts –
另一種選擇是將圖表保存爲'GEXF'格式,並將它們加載到'Gephi'(https://gephi.org/)可視化系統中。不幸的是,GraphX本身不支持該格式,但您可以嘗試自行實施。 –