概念

说明:

基于内存的计算框架。

名词:

特点:

快。

模块

  • spark core (核心库)
  • spark sql (sql)
  • spark streaming (准时间计算)
  • spark mllib (机器学习库)
  • spark graph (图上计算)

安装

  • local
    • 解压
    • 配置环境变量
    • source环境变量
    • 打开命令行,输入spark-shell,能显示出scala环境即正常。
  • 集群模式
    • standalone
      • 机器分配
- h152 h153 h154
master Y
slave Y Y
  • 上传到h152
    • 解压 tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
    • 配置SPARK_HOME PATH (/etc/profile)
        #SPARK_HOME
        export SPARK_HOME=/opt/module/spark-2.1.1-bin-hadoop2.7
        export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
    • 配置JAVA_HOME (在sbin/spark-config.sh最后行追加export JAVA_HOME=/opt/module/jdk1.8.0_144)
    • 分发spark-2.1.1-bin-hadoop2.7/到h153,h154
    • 配置master节点的slaves节点 ($SPARK_HOME/conf/slaves)
      h153
      h154
    • 启动集群 ($SPARK_HOME/sbin/start-all.sh)
    • 查看进程xcall jps
      master        //h152
      worker        //h153
      worker        //h154
    • webui http://h152:8080/
      • yarn
        skip
      • mesos
        skip

rpc端口 7077

单机测试

  • start-thriftserver.sh
  • start-thriftserver.sh –hiveconf hive.server2.thrift.port 50000 改端口
  • beeline
!connect jdbc:hive2://localhost:10000
# 让输入用户名/密码时直接回车即可

使用dbeaver连接测试,若是连接不上服务,可查看是否防火墙原因。

word count

wordcount.txt的内容如下

hello word1
hello word2
hello word3
hello word3
  • shell
    val rdd1 = sc.textFile("/root/wordcount.txt")
    var rdd2 = rdd1.flatMap(line=>line.split(" "))
    var rdd3 = rdd2.map(word=>(word,1))
    var rdd4 = rdd3.reduceByKey(_ + _)
    rdd4.collect
  • java

api

  • SparkContext spark程序的入口点,封装了整个spark运行环境的信息。
  • RDD 弹性分布式数据集

命令(创建分区表,删除分区)

CREATE TABLE tmp_sales(id INT) PARTITIONED BY (country STRING, quarter int);
insert into tmp_sales PARTITION (country = 'abc', quarter = 1) values(1);
insert into tmp_sales PARTITION (country = 'abc', quarter = 1) values(2);
insert into tmp_sales PARTITION (country = 'abc', quarter = 2) values(1);
insert into tmp_sales PARTITION (country = 'abc', quarter = 2) values(2);
select * from tmp_sales limit 10;
– 根据两个字段确定分区再删除
ALTER TABLE tmp_sales DROP PARTITION (country = 'abc', quarter=1);
– 根据一个字段确定分区再删除
ALTER TABLE tmp_sales DROP PARTITION (country = 'abc');
删除不存在的分区时会报异常:
org.apache.spark.sql.AnalysisException: No partition is dropped. One partition spec 'Map(country -> abc, quarter -> 1)' does not exist in table 'tmp_sales' database 'default';; nested exception is java.sql.SQLException: 

查看所有配置参数 set -v
–conf spark.sql.crossJoin.enabled=true

spark.sql.crossJoin.enabled true When false, we will throw an error if a query contains a cartesian product without explicit CROSS JOIN syntax.

问题

给dbeaver指定java路径,在dbeaver.ini中添加如下即可(dbeaver的命令行参数是两行)

-vm
D:/apps/jdk8u151/bin/javaw.exe

dbeaver文件内容示例如下(…代码其它配置):

...
-vm
D:/apps/jdk8u151/bin/javaw.exe
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
--add-modules=ALL-SYSTEM
...
作者:张三  创建时间:2026-03-12 18:51
最后编辑:张三  更新时间:2026-03-12 18:54