Spark应用程序初试(总结开发spark应用程序的基本步骤)
1 Spark Shell和Spark应用程序
Spark可以通过一个简单的、专门用于执行Scala、Python、R和SQL代码的Spark shell 访问数据集。在Spark的安装目录下的bin目录下,有spark-shell用于启动spark的交互式命令行、pyspark用于启动python的交互式命令行、sparkR用于启动R的交互式命令行、spark-sql用于启动spark sql的交互式命令行。这些是安装spark的时候自带的Spark的API,通过上面的命令启动之后,就可以使用相应的语言调用Spark提供的API进行编程了。
Scala程序通常使用Scala IDE或IntelliJ IDEA编译器进行编写开发,并使用SBT或IntelliJ IDEA进行编译测试、打包等。Java程序通常在Eclipse中编写,用Maven进行编译。Python和R程序可以使用任何文本编辑器中编写,也可以使用Eclipse等IDE。
2 创建Spark环境
任何Spark程序的起点都是创建一个Spark环境,它提供一个到Spark API的入口。要设置配置属性,需要把一个SparkConf对象传递到SparkContext,如下代码所示:
//python代码 from pyspark import SparkConf, SparkContext conf = (SparkConf().setMaster("spark://masterhostname:7077").setAppName("My Analytical Application").set("spark.executor.memory"), "2g")) sc = SparkContext(conf = conf)复制代码
在使用编译器编写scala程序时,通常可以按照以下步骤进行:
2.1 添加程序所需依赖
使用IDEA编程时,如果创建的是Maven工程,则需要在pom.xml文件的dependencies中添加相应的依赖:
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>2.2.1</version> </dependency>复制代码
另外,如果需要访问HDFS集群,还需要在maven工程的pom.xml文件的dependencies中添加如下依赖:
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.3</version> </dependency>复制代码
注意,上面的2.7.3是所编写的spark程序要运行或测试环境所安装的HDFS的版本。
2.2 导入Spark所需要的包
最后,在编程的时候还需要导入下面的包:
import org.apache.spark.SparkContext import org.apache.spark.SparkConf复制代码
在Spark1.3.0之前的版本中,还需要显式地导入org.apache.spark.SparkContext._以激活基本的隐式转换。
2.3 初始化Spark
在配置完pom.xml所需依赖、导入Spark程序所需包之后,就可以进行编程了,如下简单的配置sc的几条语句:
import org.apache.spark.SparkConf import org.apache.spark.SparkContext val conf = new SparkConf().setAppName("myApp").setMaster("master") val sc = new SparkContext(conf)复制代码
The appName parameter is a name for your application to show on the cluster UI. master is a Spark, Mesos or YARN cluster URL, or a special “local” string to run in local mode. In practice, when running on a cluster, you will not want to hardcode master in the program, but rather launch the application with spark-submit and receive it there. However, for local testing and unit tests, you can pass “local” to run Spark in-process.
上面代码段中的参数"myApp"是展示在集群UI中的应用的名称。
作者:goonwalk
链接:https://juejin.cn/post/7036388131536371742
伪原创工具 SEO网站优化 https://www.237it.com/