SBT安裝及命令行打包spark程式

来源:https://www.cnblogs.com/xiaolan-Lin/archive/2019/08/14/11343533.html
-Advertisement-
Play Games

1.從https://www.scala-sbt.org/download.html官網上尋找所需要的安裝包 可以直接本地下載完扔進去也可以wget路徑,在這裡我用的是sbt1.2.8版本的,下載到/usr/local目錄下 2.將下載的sbt文件中的sbt-launch.jar拷貝到/usr/lo ...


1.從https://www.scala-sbt.org/download.html官網上尋找所需要的安裝包

可以直接本地下載完扔進去也可以wget路徑,在這裡我用的是sbt1.2.8版本的,下載到/usr/local目錄下

2.將下載的sbt文件中的sbt-launch.jar拷貝到/usr/local/下的sbt目錄中的一級目錄下

3.在/usr/local/sbt中創建一個sbt腳本(vim ./sbt),添加以下內容:

SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
 

4.修改腳本許可權

chmod u+x ./sbt

5.修改依賴源(此處修改為阿裡源)

vim ~/.sbt/repositories
修改內容如下:
[repositories]
local
aliyun-nexus: http://maven.aliyun.com/nexus/content/groups/public/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots

6.定位阿裡源

進入這兩個文件,
vim sbtconfig.txt
vim sbtopts
將此行代碼加入兩個文件的最後一行
-Dsbt.override.build.repos=true

7.檢驗 sbt 是否可用,耐心等待,一般需要下載好幾分鐘的,但是如果等待的時間特別長,那建議換源,前面的阿裡源就是我針對這個問題而換的,如果你是按照我前面的操作來做的話,那很快就能成功。

 ./sbt sbtVersion
最後出現版本信息就可以了

8.接下來進行spark第一個應用程式的打包執行

1)首先進入用戶的主文件夾

cd ~

創建應用程式根目錄

mkdir sparkapp

創建所需的文件夾結構

mkdir -p ./sparkapp/src/main/scala

2)在./sparkapp/src/main/scala下建立一個SimpleApp.scala的文件

vim ./sparkapp/src/main/scala/SimpleApp.scala

內容如下:

 1 /* SimpleApp.scala */
 2 import org.apache.spark.SparkContext
 3 import org.apache.spark.SparkContext._
 4 import org.apache.spark.SparkConf
 5  
 6 object SimpleApp {
 7 def main(args: Array[String]) {
 8 val logFile = "file:///usr/local/spark-2.4.3/README.md"
 9 val conf = new SparkConf().setAppName("Simple Application")
10 val sc = new SparkContext(conf)
11 val logData = sc.textFile(logFile, 2).cache()
12 val numAs = logData.filter(line => line.contains("a")).count()
13 val numBs = logData.filter(line => line.contains("b")).count()
14 println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
15 }
16 }
該程式計算 /usr/local/spark/README 文件中包含 “a” 的行數 和包含 “b” 的行數。代碼第8行的 /usr/local/spark 為 Spark 的安裝目錄,如果不是該目錄請自行修改。不同於 Spark shell,獨立應用程式需要通過 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的參數 SparkConf 包含了應用程式的信息。 該程式依賴 Spark API,因此我們需要通過 sbt 進行編譯打包。 ./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加內容如下,聲明該獨立應用程式的信息以及與 Spark 的依賴關係:
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.3"
文件 simpale.sbt 需要指明 Spark 和 Scla 的版本。在上面的配置信息中,scalaVersion用來指定scala的版本,sparkcore用來指定spark的版本,這兩個版本信息都可以在之前的啟動 Spark shell 的過程中,從屏幕的顯示信息中找到。下麵就是筆者在啟動過程當中,看到的相關版本信息(備註:屏幕顯示信息會很長,需要往回滾動屏幕仔細尋找信息)。

3)使用 sbt 打包 Scala 程式

cd ~/sparkapp
find .
接著,我們就可以通過如下代碼將整個應用程式打包成 JAR(首次運行同樣需要下載依賴包 ):
/usr/local/sbt/sbt package
生成的jar包的位置為:
~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

4)通過spark-submit運行程式,將生成的jar包通過是spark-submit提交到spark中運行

/usr/local/spark-2.4.3/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
上面的命令輸出的東西會特別多,所以也可以通過管道化來篩選跟輸出指定的信息
/usr/local/spark-2.4.3/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"

 


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

-Advertisement-
Play Games
更多相關文章
  • stm8s和stm8l低功耗對比 在低功耗應用中,一般來說mcu是常態halt模式,然後偶爾被喚醒(外部中斷或者內部定時喚醒)進入運行模式。所以對比低功耗性能,一般來說只需要對比run模式和halt下的功耗即可,因為項目選用的是通過內部定時器喚醒,所以選用active halt mode。以下是st ...
  • 文章轉載自:http://www.pythonheidong.com/blog/article/3301/ 前段時間,我在準備面試的時搜到的一套Linux運維工程師面試題,感覺比較全面,一直保存在草稿,剛在整理後臺時翻了出來,乾脆就發出來好了,以備不時之需。 1.linux如何掛在windows下的 ...
  • 今天,來介紹幾個常用文本處理命令和vim文本編輯器 day3--常用文本處理命令和vim文本編輯器 col,用於過濾控制字元,-b過濾掉所有控制字元,這個命令並不常用,但可以使用man 命令名| col -b >help.txt 導出一份幫助文檔。|是管道符,用於把前面的執行結果經由一個“管道”送給 ...
  • 在sql語句中經常遇到處理前置和後置數據的問題 1、首先使用convert轉化函數對預處理的數據進行轉化,CONVERT()函數可以將制定的數據類型轉換為另一種數據類型 MySQL 的CAST()和CONVERT()函數可用來獲取一個類型的值,並產生另一個類型的值。兩者具體的語法如下: 就是CAST ...
  • 整數類型:int,smallint,bigint,decimal, 實數類型:float,real 字元串類型: char/nchar varchar/nvarchar 1.有沒有var的區別:帶var的叫可變長度的字元串類型,不帶var的是定長字元串。定長的欄位,如果存儲的數據沒達到最大長度,系統 ...
  • 1.內連接 規則:返回兩個表的公共記錄 語法: 補充: 2. 左外連接 規則:以左邊的表為準,右邊如果沒有對應的記錄用null顯示 語法: 3.右外連接 規則:以右邊的表為準,左邊如果沒有對應的記錄用null顯示 語法: 4.交叉連接 規則:返回笛卡爾積 語法: 5.自然連接 規則:自動判斷條件連接 ...
  • select * from FND_FORM_CUSTOM_RULES; condition是條件 ...
  • 1.從官網上尋找自己需要的合適的版本,此處我用的是maven-3.6.1 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz 2.將其解壓 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...