spark安装测试

spark安装测试

由于本地已经安装好hadoop相关组件,所以本文是在yarn的基础上对spark进行安装及测试

  1. 确保hdfs及yarn成功启动,hadoop版本为2.7.3
  2. 安装scala,由于本人安装的spark是2.4.0,对应的scala版本需要是2.11.X。
  3. 下载spark,本人下载的是spark-2.4.0-bin-hadoop2.7这个版本。
  4. 解压,软链及修改配置文件

配置文件主要是spark-env.sh

export JAVA_HOME=/home/connect/software/java   #Java环境变量
export SCALA_HOME=/home/spark/software/scala #SCALA环境变量
export SPARK_WORKING_MEMORY=1g  #每一个worker节点上可用的最大内存
export SPARK_MASTER_IP=XXXXXX   #驱动器节点IP
export HADOOP_HOME=/home/spark/software/hadoop  #Hadoop路径
#export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop #Hadoop配置目录
export SPARK_WORKER_CORES=2             #每个节点多少核
export SPARK_WORKER_INSTANCES=1

然后修改slaves,将worker节点ip写入其中。 修改bashrc文件。

  1. 在master上启动start-all.sh 6,然后在浏览器中输入:https://masterip:8081 有spark管理界面即可。

测试spark是否可以工作

  1. 测试功能为worldCount。手动制作一个txt文件,输入一些单词,并上传到hdfs中。
  2. 利用spark-shell的方式进行测试
val file=sc.textFile("hdfs://hdfs:9000/user/spark/logs/words"
val count=file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
count.collect()

其后就会在客户端上显示测试结果

自己写scala的jar包上传并测试(worldCount)

  1. maven项目,引入maven库
<dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.4</version>
    </dependency>
    <dependency> <!-- Spark -->
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>2.4.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency> <!-- Spark Streaming -->
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.12</artifactId>
        <version>2.4.0</version>
        <scope>provided</scope>
    </dependency>
  1. 建一个WordCount
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]): Unit = {
    if (args.length < 1) {
      System.err.print("Usage: <file>")
      System.exit(1)
    }
    val conf = new SparkConf().setMaster("spark://10.37.167.204:7077")
    val sc = new SparkContext(conf)
    val line = sc.textFile(args(0))
    line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect().foreach(println)
    sc.stop()
  }
}

3.打成jar上传到服务器,然后进入spark/bin目录下执行

spark-submit --master spark://masterIp:7077 --name WordCount --class WordCount --executor-memory 1G --total-executor-cores 2 ../Scala.jar hdfs://hdfs:9000/user/spark/logs/words

这里的结果是输出到客户端,也可以输入到hdfs文件中,代码中自己设置。

saprk Mlib学习函数

  • 密集和稀疏向量
一个向量(1.0,0.0,3.0)它有2中表示的方法
密集:[1.0,0.0,3.0]    其和一般的数组无异

稀疏:(3,[0,2],[1.0,3.0])     其表示的含义(向量大小,序号,值)   序号从0开始

import org.apache.spark.mllib.linalg.Vectors
object Test {
  def main(args: Array[String]) {
    val vd = Vectors.dense(2, 5, 8)
    println(vd(1))
    println(vd)
    //向量个数,序号,value
    val vs = Vectors.sparse(4, Array(0, 1, 2, 3), Array(9, 3, 5, 7))
    println(vs(0)) //序号访问
    println(vs)
    val vs2 = Vectors.sparse(4, Array(0, 2, 1, 3), Array(9, 3, 5, 7))
    println(vs2(2))
    println(vs2)
  }
}
--- result ---
5.0
[2.0,5.0,8.0]
9.0
(4,[0,1,2,3],[9.0,3.0,5.0,7.0])
3.0
(4,[0,2,1,3],[9.0,3.0,5.0,7.0])

spark算子

  • zip
def zip[U](other: RDD[U])(implicit arg0: ClassTag[U]): RDD[(T, U)]
zip函数用于将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常

------------

val rdd1 = sc.parallelize(Array(1,2,3,4,5,6),2)
    val rdd2 = sc.parallelize(Array(2,3,3,4,5,7),2)
    rdd1.zip(rdd2).collect().foreach(println)
//result
	(1,2)
(2,3)
(3,3)
(4,4)
(5,5)
(6,7)
  • zipPartitions 以分区为单位进行zip操作,要求分区数目相等。否则异常。
 val func = (x:Iterator[Int],y:Iterator[Int])=>{
      var result = List[String]()
      while(x.hasNext&&y.hasNext){
        result::=x.next()+"_"+y.next()
      }
      result.iterator
    }
    rdd1.zipPartitions(rdd2)(func).collect().foreach(println)
##result
3_3
2_3
1_2
6_7
5_5
4_4

下面是一个简单的例子

spark Mllib学习

http://www.cnblogs.com/shishanyuan/p/4747761.html https://blog.csdn.net/antkillerfarm/article/details/53734658

https://blog.csdn.net/l_15156024189/article/details/81712519

pca :https://blog.csdn.net/lyl771857509/article/details/79435402

Spark MLlib简介 https://blog.csdn.net/yimingsilence/article/details/72724408

使用SGD算法逻辑回归的垃圾邮件分类器 https://www.cnblogs.com/xiaoyesoso/p/5556179.html
Spark 部署及示例代码讲解 https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-deploy1/ 于Spark的Als算法+自迭代+Spark2.0新写法 https://blog.csdn.net/wangqi880/article/details/52923356 矩阵奇异值分解 https://blog.csdn.net/u011251945/article/details/81362642 https://blog.csdn.net/u013108511/article/details/79016939 矩阵的迹以及迹对矩阵求导 矩阵求导法则与性质

spark源码阅读

1 https://www.cnblogs.com/yangtong/p/7132627.html

转载于:https://my.oschina.net/112612/blog/2989051

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值