zoukankan      html  css  js  c++  java
  • Spark记录(一):Spark全景概述

    一、Spark是什么

    Spark是一个开源的大数据处理引擎。

    二、Spark的主要组件如下图所示:

     三、Spark运行时架构

    Spark共有三种运行模式:本地模式、集群模式、客户端模式。

    生产环境基本都是用集群模式。集群模式需要用到集群管理器,三个核心的集群管理器为:Spark自带的独立集群管理器、Yarn、Mesos。

    集群模式运行时,单个Spark任务的架构图为:

     其中集群管理器负责分配/回收服务器资源和监控整个Spark任务是否完成。

    四、IDEA环境准备

    1、准备Scala的SDK

    若用Scala开发的话,需做此步。下载Scala的msi文件本地安装之后,在IDEA中如下图所示的加号位处导入Scala的SDK目录,导入之后会如下图所示:

    2、在Plugins中安装名叫Scala的插件

    自行安装即可

    3、配置项目支持Scala

    选中项目最高级目录后右键,选择【Add Framework Support】,然后在里面勾选Scala选项

     如此之后,便可以在包里面右键new Scala类了:

    4、导入maven依赖

    <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-streaming_${scala.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_${scala.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_${scala.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-mllib_${scala.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>

    版本用的是:

    <spark.version>3.2.0</spark.version>
            <scala.version>2.13</scala.version>

    5、编写个简单的脚本运行

    def main(args: Array[String]): Unit = {
        val ss = SparkSession.builder().appName("localhost").master("local[*]").getOrCreate()
    
        val df1 = ss.range(2, 100, 2).toDF()
        val df2 = ss.range(2, 100, 4).toDF()
    
        val df11 = df1.repartition(5)
        val df21 = df2.repartition(6)
    
        val df12 = df11.selectExpr("id * 5 as id")
        val df3 = df2.join(df12, "id")
        val df4 = df3.selectExpr("sum(id)")
    
        df4.collect().foreach(println(_))
        df4.explain()
      }

    运行结果:

     Intersting Number!

    explain打印出来的逻辑计划,有时间再详细解读。

    另附:

    1、下载历史Hadoop版本的地址:

    http://archive.apache.org/dist/hadoop/core/

    2、下载winutils.exe、hadoop.dll文件的地址:

    https://blog.csdn.net/ytp552200ytp/article/details/107223357

  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/zzq6032010/p/15516317.html
Copyright © 2011-2022 走看看