spark怎么安裝

這篇文章主要介紹“spark怎么安裝”,在日常操作中,相信很多人在spark怎么安裝問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”spark怎么安裝”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

站在用戶的角度思考問題,與客戶深入溝通,找到隆德網(wǎng)站設(shè)計與隆德網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋隆德地區(qū)。

什么是RDD

問題:從一個總計100行的文件中找出所有包含“包租婆”的行數(shù) 算法如下:

1. 讀一行,判斷這一行有“包租婆”嗎?如果有,全局變量count加1。
2. 文件到末尾了嗎?如果沒有,跳轉(zhuǎn)到第1步繼續(xù)執(zhí)行。
3. 打印count。

RDD的概念:全稱為Resilient Distributed Datasets,是一個容錯的、并行的數(shù)據(jù)結(jié)構(gòu),可以讓用戶顯式地將數(shù)據(jù)存儲到磁盤和內(nèi)存中,并能控制數(shù)據(jù)的分區(qū)。

上述例子中,總計100行的文件就是一個RDD,其中每一行表示一個RDD的元素

RDD兩大特性

1. 對集合的每個記錄執(zhí)行相同的操作
    - 每一行都做“字符串”檢查
    - 檢查本行是不是到了最后一行
2. 這個操作的具體行為是用戶指定的
    - 包含“包租婆”就為計數(shù)器做+1操作
    - 最后一行:結(jié)束;不是最后一行:進入下一行檢查

RDD有哪些操作參考資料

1. 創(chuàng)建RDD
    - 從文件中創(chuàng)建
    val b = sc.textFile("README.md")
    README.md每一行都是RDD的一個元素 
    - 從普通數(shù)組創(chuàng)建RDD
    scala> val a = sc.parallelize(1 to 9, 3)
    里面包含了1到9這9個數(shù)字,它們分別在3個分區(qū)
2. map
map是對RDD中的每個元素都執(zhí)行一個指定的函數(shù)來產(chǎn)生一個新的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. mapPartitions
mapPartitions是map的一個變種。map的輸入函數(shù)是應用于RDD中每個元素,而mapPartitions的輸入函數(shù)是應用于每個分區(qū),也就是把每個分區(qū)中的內(nèi)容作為整體來處理的
    - 函數(shù)myfunc是把分區(qū)中一個元素和它的下一個元素組成一個Tuple
scala> 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).collect
res0: Array[(Int, Int)] = Array((2,3), (1,2), (5,6), (4,5), (8,9), (7,8))
4. mapValues
mapValues顧名思義就是輸入函數(shù)應用于RDD中Kev-Value的Value,原RDD中的Key保持不變,與新的Value一起組成新的RDD中的元素。因此,該函數(shù)只適用于元素為KV對的RDD。

_def mapPartitions[U: ClassTag](f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false): RDD[U]

f即為輸入函數(shù),它處理每個分區(qū)里面的內(nèi)容。每個分區(qū)中的內(nèi)容將以Iterator[T]傳遞給輸入函數(shù)f,f的輸出結(jié)果是Iterator[U]。最終的RDD由所有分區(qū)經(jīng)過輸入函數(shù)處理后的結(jié)果合并起來的。_

    - RDD b 的key是字符串長度,value是當前元素值;對b進行mapValues操作,使得value首尾字符設(shè)為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. mapWith
mapWith是map的另外一個變種,map只需要一個輸入函數(shù),而mapWith有兩個輸入函數(shù)。

spark安裝

- 資料

    [安裝過程](https://spark.apache.org/downloads.html)
    

- 安裝
wget http://apache.spinellicreations.com/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz
tar zxf spark-1.6.1-bin-hadoop2.6.tgz
mv spark-1.6.1-bin-hadoop2.6 spark
mv -f spark ~/app/
vi ~/.bash_profile 

PATH=$PATH:$HOME/bin:/home/solr/app/spark/bin

source ~/.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 println
package org.apache.spark.examples

import scala.math.random

import 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服務器,執(zhí)行命令
$SPARK_HOME$/bin/spark-submit  --class "org.apache.spark.examples.SparkPi" --master spark://updev4:7077 /home/solr/sparkPi.jar

輸出結(jié)果:
Pi is roughly 3.13662

到此,關(guān)于“spark怎么安裝”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

當前標題:spark怎么安裝
標題鏈接:http://bm7419.com/article18/jcidgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站收錄、企業(yè)建站、網(wǎng)站設(shè)計虛擬主機、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司