Spark快速上手(1)window下環境配置

来源:https://www.cnblogs.com/unknownshangke/archive/2022/06/30/16426853.html
-Advertisement-
Play Games

筆者使用的開發環境是IntelliJ IDEA Community Edition 2021.3.3 scala版本是2.11.8,與Spark2.0嚴格對應。 (1)在maven環境中導入scala框架 導入Scala框架 導入成功後在main/java 路徑中可以創建新的scala類 至此,sc ...


筆者使用的開發環境是IntelliJ IDEA Community Edition 2021.3.3 

scala版本是2.11.8,與Spark2.0嚴格對應。

(1)在maven環境中導入scala框架

 

 

 

 

 

導入Scala框架 

 

 

 

 

 

 

導入成功後在main/java 路徑中可以創建新的scala類

 

 

 

 

 

 

 

 

至此,scala 配置完成。

(2)spark 框架調用測試WordCount案例

①首先,檢查一下 spark相關導包是否正常

scala、hadoop版本都要滿足spark版本。

其中hadoop為了能在window系統下運行,需要下載https://github.com/cdarlint/winutils中對應的版本bin目錄中的hadoop.dllwinutils.exe,添加到hadoop的bin目錄下。

但是筆者嘗試發現,官網下載的最舊版本的spark 和 hadoop 難以適配上述代碼倉庫中很久沒有更新的文件,故嘗試利用手頭實驗使用的文件適配。

筆者使用版本:

scala-2.11.8

spark-2.0.0-bin-hadoop2.7

hadoop-2.7.7

使用的文件在如下鏈接中分享

 鏈接:https://pan.baidu.com/s/1e3BAlF0SaPMn8iXp9v5fYA    提取碼:unsk

②然後,在pom文件中添加依賴,這個是版本嚴格對應的

代碼如下:

<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>



 ③添加spark框架

 

 

 

 

 

 這樣,scala中就能正常導入spark包了

 

 ④hadoop 相關需要註意的配置

如果是直接使用的我傳的文件,只需要添加系統變數 HADOOP_HOME:hadoop文件夾路徑

Path:hadoop文件夾/bin 路徑 即可

如果使用的hadoop文件是自己的,請滿足提示①的前提下完成上述步驟

⑤wordCount.scala 樣例

代碼如下

package demo

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object wordCount {
def main(args: Array[String]): Unit = {
// 創建 Spark 運行配置對象
val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
// 創建 Spark 上下文環境對象(連接對象)
val sc : SparkContext = new SparkContext(sparkConf)
// 讀取文件數據
val fileRDD: RDD[String] = sc.textFile("input/word.txt")
// 將文件中的數據進行分詞
val wordRDD: RDD[String] = fileRDD.flatMap( _.split(" ") )
// 轉換數據結構 word => (word, 1)
val word2OneRDD: RDD[(String, Int)] = wordRDD.map((_,1))
// 將轉換結構後的數據按照相同的單詞進行分組聚合
val word2CountRDD: RDD[(String, Int)] = word2OneRDD.reduceByKey(_+_)
// 將數據聚合結果採集到記憶體中
val word2Count: Array[(String, Int)] = word2CountRDD.collect()
// 列印結果
word2Count.foreach(println)
//關閉 Spark 連接
sc.stop()
}
}

需要在demo目錄下創建 input文件夾,併在其中添加word.txt文件
⑥關於log日誌:
運行程式過程中會產生大量日誌,為了更好地查看執行結果,可以在src/main/resources目錄下創建log4j.properties文件,添加
日誌配置來取消顯示

spark包中提供對應的模板,不過是臨時文件。

 

 



 

 

將新文檔中 rootCategory一行中第一個值改為ERROR即可

筆者在嘗試運行scala示例過程中曾報出 xxx not found的錯誤,後經排查發現是部分框架文件沒用成功傳至maven倉庫中,後通過手動添加轉移的辦法解決了這一問題。經檢查,maven倉庫地址在C盤符(應為idea預設目錄),故筆者認為該情況的發生可能跟開發環境沒有賦予管理員許可權運行有關。




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 520,並非情人所屬, 我們可以表白萬物, 不管什麼時候, 這都是一個特別的日子, 今天,我要表白所有, 心裡有我的人! 在這個充滿幸福的日子里, 我要把最美好的祝福, 送給心裡有我的每一個人; 祝願大家: 一生平安,身體健康, 生活幸福,家庭美滿! 不知不覺又是520了,先的一年有多少人表白 ...
  • Maven3 Core Overview Maven是一個項目管理工具,它包含了一個項目對象模型(Project Object Model,POM) ,一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System), ...
  • 作為初二的學生,數學題總是令我苦惱的問題。尤其是我們這裡的預備班考試(即我們這裡最好的兩所高中提前一年招生,選拔尖子生的考試)將近,我所面對的數學題越發令人頭疼。 這不,麻煩來了: 如圖,在正方形ABCD中,E在射線BC上,連接AE、CE,則DE/AE的最小值為lxx_____. 拿到這題,信心慢慢 ...
  • Java基礎之 註釋、標識符、關鍵字 註釋、標識符、關鍵字 數據類型 類型轉換 變數、常量 運算符 包機制、JavaDoc 註釋 在代碼量比較多,項目結構複雜起來,我們就需要用到註釋。 註釋不會被執行,是給寫代碼的人看的 書寫註釋是一個非常好的習慣 在Java中的註釋有三種: 單行註釋 多行註釋 文 ...
  • 現在有個需求是接收base64編碼的圖片,然後上傳到文件伺服器上,由於文件服務的代碼是固定的代碼不能修改,所以只能適配介面。文件服務代碼如下: @FeignClient(value = "base-files", configuration = SpringMultipartEncoder.clas ...
  • Hi,大家好,我是Mic。 一個工作了5年的粉絲私信我,最近面試碰到很多Redis相關的問題。 其中一個面試官問他Redis裡面的持久化機制,沒有回答得很好。 希望我幫他系統回答一下。 關於Redis裡面的RDB和AOF兩種持久化機制的原理和優缺點這個問題。 下麵看看普通人和高手的回答。 普通人: ...
  • 通常在讀寫文件之前,需要判斷文件或目錄是否存在,不然某些處理方法可能會使程式出錯。所以最好在做任何操作之前,先判斷文件是否存在。 這裡將介紹三種判斷文件或文件夾是否存在的方法,分別使用os模塊、Try語句、pathlib模塊。 1.使用os模塊 os模塊中的os.path.exists()方法用於檢 ...
  • JAVA編碼中存在一些容易被人忽視的陷阱,稍不留神可能就會跌落其中,給項目的穩定運行埋下隱患。此外,這些陷阱也是面試的時候面試官比較喜歡問的問題。 本文對這些陷阱進行了統一的整理,讓你知道應該如何避免落入陷阱中,下麵就一起來瞭解下吧。 迴圈中操作目標list 遍歷List然後對list中符合條件的元 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...