spark点点滴滴 —— 开发运行scala程序

概述

环境:spark 2.0.1
运行模式:spark on yarn

我们用scala语言编写的程序如何在spark集群上提交任务并运行呢,我们知道一个java程序spark提交命令如下:

spark-submit --class className --name jobName --master yarn-cluster  ./xxx-SNAPSHOT.jar

其中clasName是入口main函数所在类,即程序入口;
jobName是提交的任务名称, ./xxx-SNAPSHOT.jar是程序打包而成的jar文件。

准备

要提交scala程序到spark上,首先我们需要会用IDE编写scala程序。

对于scala程序,简单语法和开发方式如下:
1. 入口main函数通过object关键字对象定义,可以参考scala基础7 —— scala的静态类型(object)
2. 针对scala程序的开发和打包,参考scala —— maven scala项目开发

程序实践

我们采用官网的LR代码示例来演示开发和提交任务,官网代码参见http://spark.apache.org/docs/latest/ml-pipeline.html

创建工程

通过intellij创建一个工程,具体步骤以及配置参见##准备中的第2项,完整的pom.xml配置如下:

 <properties>
        <scala.version>2.11.8</scala.version>
        <spark.version>2.0.1</spark.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.11</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Martin Odersky 用他定义的匹萨语言给了 Java世界一个很大的冲击。尽管匹萨本身没有流行 但它展现了当把面向对象和函数型语言两种风格,技术地且很有品地混搭在一起时,就形成了 自然和强有力的组合。匹萨的设计成为了 Java泛型的基础,马丁的 GJ(Generic Java)编译 Java 1.3开始成为了 Sun 微系统的标准编译器(尽管关闭了泛型)。我有幸能够维护这个编译 年,因此我能通过第一手经验从语言设计到语言的实现方面(向大家)报告马丁的技术。 那时候我们还在 Sun 公司,尝试用一些零打碎敲的特定问题解决方案来扩展语言,如 for-eac 环,枚举,自动装包,去简化程序开发的时候,马丁则继续着他在更强大的正交语言原语方面 作以帮助程序员用库来提供解决方案。 后来,静态型语言受到了冲击。Java 的经验说明了静态语言编程会导致大量的固定写法的代 通常认为我们应该避免静态型从而消除这种代码,于是人们对动态语言如 Python,Rub Groovy的兴趣开始增加。这种认知被马丁最近的作品,Scala,的出现打破。 Scala 是一种很有品味的型语言:它是静态型的,但仅在需要的地方显式定义型。Scala 向对象和函数式语言两方面获得了强大的特性,然后用一些新奇的点子把它们漂亮地整合成一 它的语法是如此的轻量级,而原语又如此富有表达力,以至于根本可以认为 API的使用不须负 法开销。我们可以在标准库,如拆分器、组合器和执行器,发现例子。从这点上看,Scal 一种支持内嵌的域特化:embedded domain-specific 的语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值