阅读 202

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/ 


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐