千家信息网

spark怎么安装

发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,这篇文章主要介绍"spark怎么安装",在日常操作中,相信很多人在spark怎么安装问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"spark怎么安装"的疑惑有所帮助!接
千家信息网最后更新 2024年10月22日spark怎么安装

这篇文章主要介绍"spark怎么安装",在日常操作中,相信很多人在spark怎么安装问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"spark怎么安装"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

什么是RDD

问题:从一个总计100行的文件中找出所有包含"包租婆"的行数 算法如下:

1. 读一行,判断这一行有"包租婆"吗?如果有,全局变量count加1。2. 文件到末尾了吗?如果没有,跳转到第1步继续执行。3. 打印count。

RDD的概念:全称为Resilient Distributed Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。

上述例子中,总计100行的文件就是一个RDD,其中每一行表示一个RDD的元素

RDD两大特性

1. 对集合的每个记录执行相同的操作    - 每一行都做"字符串"检查    - 检查本行是不是到了最后一行2. 这个操作的具体行为是用户指定的    - 包含"包租婆"就为计数器做+1操作    - 最后一行:结束;不是最后一行:进入下一行检查

RDD有哪些操作参考资料

1. 创建RDD    - 从文件中创建    val b = sc.textFile("README.md")    README.md每一行都是RDD的一个元素     - 从普通数组创建RDD    scala> val a = sc.parallelize(1 to 9, 3)    里面包含了1到9这9个数字,它们分别在3个分区2. mapmap是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。任何原RDD中的元素在新RDD中都有且只有一个元素与之对应。    - RDD a 中每个元素都比原来大一倍    scala> val b = a.map(x => x*2)    scala> b.collect    res11: Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18)3. mapPartitionsmapPartitions是map的一个变种。map的输入函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区,也就是把每个分区中的内容作为整体来处理的    - 函数myfunc是把分区中一个元素和它的下一个元素组成一个Tuplescala> def myfunc[T](iter: Iterator[T]) : Iterator[(T, T)] = {    var res = List[(T, T)]()     var pre = iter.next while (iter.hasNext) {        val cur = iter.next;         res .::= (pre, cur) pre = cur;    }     res.iterator}scala> a.mapPartitions(myfunc).collectres0: Array[(Int, Int)] = Array((2,3), (1,2), (5,6), (4,5), (8,9), (7,8))4. mapValuesmapValues顾名思义就是输入函数应用于RDD中Kev-Value的Value,原RDD中的Key保持不变,与新的Value一起组成新的RDD中的元素。因此,该函数只适用于元素为KV对的RDD。_def mapPartitions[U: ClassTag](f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false): RDD[U]f即为输入函数,它处理每个分区里面的内容。每个分区中的内容将以Iterator[T]传递给输入函数f,f的输出结果是Iterator[U]。最终的RDD由所有分区经过输入函数处理后的结果合并起来的。_    - RDD b 的key是字符串长度,value是当前元素值;对b进行mapValues操作,使得value首尾字符设为x        scala> val a = sc.parallelize(List("dog", "tiger", "lion", "cat", "panther", " eagle"), 2)        scala> val b = a.map(x => (x.length, x))        scala> b.mapValues("x" + _ + "x").collect        res5: Array[(Int, String)] = Array((3,xdogx), (5,xtigerx), (4,xlionx),(3,xcatx), (7,xpantherx), (5,xeaglex))5. mapWithmapWith是map的另外一个变种,map只需要一个输入函数,而mapWith有两个输入函数。

spark安装

- 资料    [安装过程](https://spark.apache.org/downloads.html)    - 安装
wget http://apache.spinellicreations.com/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgztar zxf spark-1.6.1-bin-hadoop2.6.tgzmv spark-1.6.1-bin-hadoop2.6 sparkmv -f spark ~/app/vi ~/.bash_profile PATH=$PATH:$HOME/bin:/home/solr/app/spark/binsource ~/.bash_profile
- 启动spark
spark-shell进入scala>命令行
- hello world
scala> println("hello world")hello world

spark IDE

  • 下载并安装JDK

  • 下载并安装IDEA

  • 下载并安装SCALA

  • 准备好spark的lib包

  • 添加IDEA 的SCALA插件 File->Settings->Plugins->搜索Scala,并安装Scala插件

  • 新建项目 File->New Project->选择Scala->next->project name & location -> Finish

  • 添加spark的lib包 "File"-> "project structure" -> "Libraries",选择"+",将spark-hadoop 对应的包导入

  • 新建SparkPi类(源码见$SPARKHOME$/examples/src/main/scala/org/apache/spark/examples) 新建包:org.apache.spark.examples 新建Scala类:SparkPi

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *    http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */// scalastyle:off printlnpackage org.apache.spark.examplesimport scala.math.randomimport org.apache.spark._/** Computes an approximation to pi */object SparkPi {  def main(args: Array[String]) {    val conf = new SparkConf().setAppName("Spark Pi") //本地运行加.setMaster("local")     val spark = new SparkContext(conf)    val slices = if (args.length > 0) args(0).toInt else 2    val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow    val count = spark.parallelize(1 until n, slices).map { i =>      val x = random * 2 - 1      val y = random * 2 - 1      if (x*x + y*y < 1) 1 else 0    }.reduce(_ + _)    println("Pi is roughly " + 4.0 * count / n)    spark.stop()  }}// scalastyle:on println[打包](http://blog.sina.com.cn/s/blog_3fe961ae0102uy42.html)打出的jar在code\spark\test\out\artifacts\sparkPi\sparkPi.jar上传至linux服务器,执行命令$SPARK_HOME$/bin/spark-submit  --class "org.apache.spark.examples.SparkPi" --master spark://updev4:7077 /home/solr/sparkPi.jar输出结果:Pi is roughly 3.13662

到此,关于"spark怎么安装"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0