做一些網(wǎng)站犯法么網(wǎng)站建設(shè)公司哪個(gè)好呀
一、Spark安裝
1.相關(guān)鏈接
Spark安裝和編程實(shí)踐(Spark3.4.0)_廈大數(shù)據(jù)庫(kù)實(shí)驗(yàn)室博客 (xmu.edu.cn)
2.安裝Spark(Local模式)
按照文章中的步驟安裝即可
遇到問(wèn)題:xshell以及xftp不能使用
解決辦法:
在linux使用鏡像網(wǎng)站進(jìn)行下載:wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.1/spark-3.5.1-bin-without-hadoop.tgz
二、編程實(shí)踐
1.使用sbt對(duì)Scala獨(dú)立應(yīng)用程序進(jìn)行編譯打包
同樣在Linux中使用wget下載sbt安裝文件sbt-1.9.0.tgz:
wget https://github.com/sbt/sbt/releases/download/v1.9.0/sbt-1.9.0.tgz
注意:由于sbt沒(méi)有國(guó)內(nèi)鏡像,下載較慢(大概兩個(gè)小時(shí))
2.其他按照上面教程中安裝即可
3.實(shí)驗(yàn)報(bào)告要求:
讀取HDFS系統(tǒng)文件“/user/hadoop/test.txt”(如果該文件不存在,請(qǐng)先創(chuàng)建)
(1)方法 1:使用?hadoop fs -put
?命令上傳本地文件
????????1).首先,你需要有一個(gè)本地文件,假設(shè)你有一個(gè)名為?local_test.txt
?的本地文件,其中包含你想要寫(xiě)入?HDFS?的內(nèi)容。
????????2).使用以下命令將本地文件上傳到?HDFS:
????????如果你是集群,需要打開(kāi)所有幾點(diǎn),再啟動(dòng)hadoop,否則報(bào)錯(cuò)(處于安全模式)
hadoop fs -put /path/to/local_test.txt /user/data/test.txt
????????將?/path/to/local_test.txt
?替換為你的本地文件的實(shí)際路徑。
(2)方法 2:直接在 HDFS 上創(chuàng)建文件并寫(xiě)入內(nèi)容
????????1).使用?hadoop fs -cat
?命令直接在?HDFS?上創(chuàng)建文件并寫(xiě)入內(nèi)容:
hadoop fs -cat > /user/data/test.txt
????????這將創(chuàng)建一個(gè)名為?test.txt
?的空文件。
????????2).現(xiàn)在你可以寫(xiě)入內(nèi)容到這個(gè)文件中。輸入你想要寫(xiě)入的內(nèi)容,然后按?Ctrl+D
?結(jié)束輸入。
This is the content of the test.txt file.
????????3).按?Ctrl+D
?結(jié)束輸入后,test.txt
?文件將包含你剛剛輸入的內(nèi)容。
????????請(qǐng)注意,這些命令需要在?Hadoop?集群的節(jié)點(diǎn)上運(yùn)行,或者你需要通過(guò)?SSH?登錄到集群中的一個(gè)節(jié)點(diǎn)。如果你的?Hadoop?集群配置了?Web?界面(如?Hue?或?Ambari),你也可以通過(guò)?Web?界面來(lái)上傳文件和查看文件內(nèi)容。
4.通過(guò)如下代碼將整個(gè)應(yīng)用程序打包成 JAR(首次運(yùn)行同樣需要下載依賴包 ):
/usr/local/sbt/sbt package
注意:這一步要保證你的Linux系統(tǒng)中所有文件夾名稱為英文
5.建立一個(gè)名為 SimpleApp.scala 的文件
相關(guān)代碼:
/* SimpleApp.scala */
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.conf.Configurationobject SimpleApp {def main(args: Array[String]): Unit = {val conf = new Configuration()val fs = FileSystem.get(conf)val path = new Path("/user/data/test.txt")val isExists = fs.exists(path)if (!isExists) {val outputStream = fs.create(path)outputStream.close()}val inputStream = fs.open(path)val lineCount = scala.io.Source.fromInputStream(inputStream).getLines().sizeprintln(s"File line count: $lineCount")inputStream.close()}
}
注意:上述代碼中的val path = new Path("/user/data/test.txt"),要替換為你的test.txt的路徑
6.在simple.sbt中添加如下內(nèi)容,聲明該獨(dú)立應(yīng)用程序的信息以及與 Spark 的依賴關(guān)系:
name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.18"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.10.1"
??注意:你的scala和hadoop版本要與代碼中的相同
7.通過(guò) spark-submit 運(yùn)行程序
教程給的指令缺少文件編碼格式,需要指定編碼格式,以下為修改后的指令
/usr/local/spark-3.5.1/bin/spark-submit --class "SimpleApp" --driver-java-options "-Dfile.encoding=UTF-8" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar
/usr/local/spark-3.5.1/bin/spark-submit --class "SimpleApp" --driver-java-options "-Dfile.encoding=UTF-8" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar 2>&1 | grep "Lines with a:"
注意:需要更改你的spark安裝路徑