在搭建好了Spark集群之后,我们第一步是看例子,example目录下有实例,可以把源代码全部拉到本地查看。
假设我们的master是一台名为"Y40"的机器,我们在集群中任何一台机器上,运行自带的SparkSQLExample,只需要在Spark所在目录下执行
./bin/spark-submit run-example --master spark://Y40:7077 sql.SparkSQLExample
就可以了。
这个例子耗时不长,时间长一点的例子运行情况可以在web ui中查看,这是运行SparkTC时候的截图
看起来很专业的样子。
接着我们开始自己用开发环境来研读例子代码。开发工具推荐使用InteliJ IDEA,手头的版本是社区版2016.3.4。
在插件管理界面点击“Install JetBrains plugin...”(红圈1)进入在线插件安装界面,搜索框(红圈2)里输入“scala”,如果没有安装插件,红圈3出会出现安装的按钮,在线安装完毕之后该按钮会变成重启按钮,点击重启IDEA之后scala安装就会成功了。使用这个工具的好处是自带了sbt,马上我们需要根据sbt来构建应用程序。
在新建工程之前,我们需要下载scala的sdk,这里需要注意scala的版本,必须和服务器端支撑spark的scala版本一致。本次实践scala的版本是2.11,所以我们需要下载2.11版本的scala。
这在IDEA的“Default Project Structure”界面中设置,这个界面有两个地方可以进去,一个是在欢迎界面的左下角,“Configure”的弹出菜单:“Project Defaults”-“Project Structure”,另一个是在主界面主菜单,“File”-"Other Settiings"-"Default Project Structure"。进到这个界面首先点左侧“Global Libraries”,然后点左二列的“+”,弹出菜单中选择“scala sdk”,在弹出新窗口中点击"Download...",选择合适的scala版本就可以下载。
接下来我们新建一个sbt工程,注意选择好jdk和scala sdk的版本,新建好的目录结构如下:
接下来我们把spark的实例代码下载到src/scala或者src/scala-2.11目录下,代码在spark集群的任何一个节点中都能找到,在spark的安装目录/examples/src/main/scala目录下。
最后我们需要编辑build.sbt文件,添加工程编译所需的支持库。编辑完成的build.sbt文件如下:
name:="spark-example-scala"
version:="1.0"
scalaVersion:="2.11.8"
libraryDependencies+="org.apache.spark"%"spark-core_2.11"%"2.1.0"%"provided"
libraryDependencies+="org.apache.spark"%"spark-sql_2.11"%"2.1.0"%"provided"
libraryDependencies+="org.apache.spark"%"spark-mllib_2.11"%"2.1.0"%"provided"
libraryDependencies+="org.apache.spark"%"spark-graphx_2.11"%"2.1.0"%"provided"
libraryDependencies+="org.apache.spark"%"spark-streaming_2.11"%"2.1.0"%"provided"
libraryDependencies+="com.github.scopt"%"scopt_2.11"%"3.5.0"
libraryDependencies+="org.apache.spark"%"spark-streaming-kafka-0-8_2.11"%"2.1.0"
libraryDependencies+="org.apache.spark"%"spark-streaming-flume_2.11"%"2.1.0"
等待sbt把需要的库下载完毕之后,工程就可以编译通过了。
需要注意的是%和%%的区别,导入scopt库时,github上的写法是libraryDependencies+="com.github.scopt"%%"scopt"%"3.5.0",%%表示sbt会自动在库名称后面加上scala的版本号,在本例中,就是会自动加上“_2.11”然后去maven库中去查找。