运行前提:
搭建Hadoop + Spark集群,安装jdk1.8及以上版本,Scala2.11,maven3
1、新建maven项目
这里需要注意的是我们为了方便,直接勾选Create from archetype
,然后从下面列表中选择scala archetype simple
2、填写GAV
这里按照个人设置,说白了GroupID就是公司的域名倒过来写
artifactId
可以是你项目的名称
version
就是项目的版本号
这些只是一个项目的识别,后面会体现在项目的pom.xml文件中
3、设置maven相关路径
这里需要注意的就是填写setings.xml需要是你maven的设置文件的路径,第一次我按照默认的路径生成项目在运行时候报错,后面我找到了设置文件在maven的安装目录下
比如我的是:/opt/apache-maven-3.5.3/conf/settings.xml
其他设置按照个人喜好
4、填写项目名称
接着点击finish
即可
5、本地测试
将原有的Scala文件删掉,重写本地的测试代码
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext
/**
* SQLContext的使用
*
*/
object SQLContextApp {
def main(args: Array[String]): Unit = {
val path = args(0)
//1、创建相应的context
val sparkConf = new SparkConf()
sparkConf.setAppName("SQLContextApp").setMaster("local[*]")
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
//2、进行相关的处理
val people = sqlContext.read.format("json").load(path)
people.printSchema()
people.show()
//3、关闭资源
sc.stop()
}
}
这里需要注意的是:我们的args(0)
在本地测试时候是读取的本地的文件路径,可以在项目中进行配置
找到项目的edit configuration
按照下图进行设置:
这里修改的是Program arguments
修改路径为:file:///usr/local/spark/examples/src/main/resources/people.json
当然这里是我的json文件所在的路径,我是直接拿Spark中自带的json文件进行测试,你也可以自己按照一定的格式读取
另外,可能有的坑就是在pom.xml
文件中关于Scala以及SparkSQL的依赖需要我们手动添加,因为项目最初建立的时候默认的Scala的版本比较低,需要修改为你的安装版本,比如我的是如下配置:
先指定properties
<properties>
<scala.version>2.11.12</scala.version>
<spark.version>2.1.0</spark.version>
</properties>
然后添加依赖,如果是初次运行maven项目的话可能要下载很多依赖,要等待下完
<!---scala dependency -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<!---SparkSQL dependency-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
到这里基本的环境配置就完成了
maven会自动进行编译,如下图:
看到BUILD SUCCESS
还是很开心的
6、运行
结果截图:
总结
虽然实现了最终的结果,对于SparkSQL进行了简单的测试输出,但是由于是第一次实现,还是有很多不足的地方,比如代码中的函数已经过时,新的代码使用规范将会在后面进行测试,另外后面会写关于如何在集群上进行测试的教程。