Idea 连接Spark集群
两种方式:sbt和maven
1: 使用maven方式
Idea 连接Spark集群的详细步骤如下:
先在本地安装 scala 和 java ,
scala下载地址: https://downloads.lightbend.com/scala/2.12.6/scala-2.12.6.msi
java 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 版本问题:
注意:scala 和 java 版本之间有一定的要求, 要不然会报错
最开始:java版本: 1.8.0_20 和 scala 版本 2.11.8
出现如下报错:
修改scala和java版本:
输出结果如下:
- 创建新项目:
- 项目配置
- 右击项目名-> Add Framework Support , 选择scala (注意: 如没有scala复选框,则是scala环境未配置或配置错误)
2.右击main -> scala , 点击Mark Directory as -> Resources Root
3.添加scala文件:
结果如下
配置scala 和java环境
1: 下载 scala
IDEA安装Scala插件,File->Settings->Plugins,搜索出Scla插件,点击Install安装;
2:本地存在scala
选择scala
右击scala-sdk-2.11.12选择copy to Project Libraries
配置java环境:
选择java --》 点击new, 选择安装路径
SDKs 设置java同上处理,选择java的jdk安装路径
将pom.xml中没必要的去掉(可选)
修改pom.xml 添加spark集群所需要的依赖(注意: scala只能是2.11,不能是2.11.8):
<properties>
<scala.version>2.11</scala.version>
<hadoop.version>2.6.0</hadoop.version>
<spark.version>2.1.0</spark.version>
</properties>
<repositories>
<repository>
<id>scala-tools.org</id>
<name>Scala-Tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>
在本地运行:
Run-> Edit Configurations编辑:
vm options: -Dspark.master=saprk://65.49.200.49:7070 在集群上运行
运行结果:
代码:
import org.apache.spark._
import scala.math.random
object WorkCount {
def main(args: Array[String]): Unit = {
println("Hello World")
val conf = new SparkConf().setAppName("SparkPi").setMaster("local[2]")
val spark = new SparkContext(conf)
// val slices = if (args.length > 0) args(0).toInt else 2
println("Time: " + spark.startTime)
val line = spark.textFile("file:/G:/wc.input")
// line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).saveAsTextFile("file:/G:/out.txt")
// line.foreach(println)
line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect().foreach(println)
// val n = math.min(1000L * slices, Int.MaxValue).toInt // avoid overflow
//
// val count = spark.parallelize(1 until n, slices).map { i =>
// val x = random * 2 -1
// val y = random * 2 - 1
// if (x*x + y * y < 1) 1 else 0
//
// }.reduce(_ + _)
// println("Pi is roughly " + 4.0 * count / n)
spark.stop()
}
打包scala文件, 在服务器运行
1.File->Project Structure -> Artifacts-> + -> JAR -> Frommodules with dependencies...
2. 选择Main Class
3.然后再build文件
Build -> Build Artifact -> scalascala.jar -> Build (如果是第二次之后,则选择Rebuild)
等待几十秒即可编译完毕。
4.此时可以在该项目文件夹的 ./out/artifacts/SparkT_jar/中即可找到打包后的文件
最后:
将jar包发到集群中。
spark-submit --master spark://master:7077