Spark의 로컬 개발 환경을 만드는 방법(Scala용)
모처럼 하고 Eclipse에서 IntelliJ로 마이그레이션하려고 했으므로 IntelliJ 기반으로 이야기를 진행합니다. Eclipser는 적절하게 읽어 줄 수 있다고.
sbt
Scala 패키지 관리. Ruby의 gem처럼 글로벌 더러움 없이 끝내고(Bundler 사용하면 좋은 이야기지만) 편리.
기능적으로는 몇개인가 있는 것 같지만, 자신은 의존관계의 정리에 밖에 아직 사용하고 있지 않기 때문에(잘 다루지 않고 있다) 때문에 좋은 플러그인 있으면 가르쳐 주세요.
Spark의 다양한 라이브러리도 여기에서 관리합니다.
IntelliJ로 프로젝트 만들기
버전은 적절히 지정할 것.
build.sbt
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.4.1",
"org.apache.spark" %% "spark-graphx" % "1.4.1",
"org.apache.spark" %% "spark-sql" % "1.4.1"
)
example.scala
package hellospark
import org.apache.spark.graphx.{Graph, GraphLoader}
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by nishimuuu on 2015/08/16.
*/
object example {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("appname").setMaster("local[*]")
val sc = new SparkContext(conf)
val edge_path = "/path/to/edge.csv"
val node_path = "/path/to/node.csv"
val graph: Graph[Int, Int] = GraphLoader.edgeListFile(sc, edge_path).cache()
val ranks = graph.pageRank(0.001).vertices
val nodes = sc.textFile(node_path).map{line =>
val fields = line.split(",")
(fields(0).toLong, fields(1))
}
val ranksByNode = nodes.join(ranks).map {
case(id, (node, rank)) => (node, rank)
}
println(ranksByNode.collect().mkString("\n"))
sc.stop()
}
}
(follower2 follow1 A,0.3300364712764322)
(follower2 follow0,0.4854936516596302)
(follower3 follow3,0.6927675771080204)
(follower4 follow4,0.8482247574912182)
(follower2 follow2,0.5260649857706428)
(follower2 follow1 B,0.3300364712764322)
이런 느낌. 파일의 경우 edge를 읽고 node를 붙여 가는 것이 편하다.
아직 세세하게 만지지 않았지만, 읽을 때 고뇨고뇨 할 필요가 없는 것을 알고 좋았다.
Reference
이 문제에 관하여(Spark의 로컬 개발 환경을 만드는 방법(Scala용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nishimuuu/items/3a38efbeef6665ac93c9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)