spark-sql本地(IDEA)連接遠(yuǎn)程spark踩坑指南

問題1:scala版本不一致導(dǎo)致報錯 (java.lang.ClassNotFoundException: scala.Serializable)

????解決辦法:

? ? ? 1. 通過spark-shell查看遠(yuǎn)程spark依賴的scala版本:(圖-1.1)

圖-1.1

2. 在本地maven項目中添加對應(yīng)版本的依賴:(圖-1.2)


圖-1.2

3.pom中的scala版本也保持一致?(圖-1.3)


圖-1.3

問題2:無法連接遠(yuǎn)程spark

解決辦法:

? ? ? 1. SparkConf配置master為遠(yuǎn)程地址?(圖-2.1)

圖-2.1

2.從遠(yuǎn)程服務(wù)器上拷貝hive-site.xml到項目resources目錄下(圖-2.2)

圖-2.2

3. 修改hive-site.xml中的配置,把metastore相關(guān)的配置改為遠(yuǎn)端配置?(圖-2.3)

圖-2.3

問題3:沒有權(quán)限訪問hdfs

解決辦法:

1.?指定HADOOP_USER_NAME為hadoop的啟動用戶,參見 (圖-2.1)代碼

2. 在遠(yuǎn)端使用?hdfs dfs -chmod -R 777 /xxx 修改hdfs訪問權(quán)限

問題4:運行報錯:protocol message end-group tag did not match expected tag

解決辦法:

1. 遠(yuǎn)端執(zhí)行:hdfs getconf -confKey fs.default.name 結(jié)果如圖(圖-4.1)


圖-4.1

2. 查看第一步返回的結(jié)果和本地hive-seite.xml中的端口是否一致,有的用戶使用的是8020,如果不一致,修改為何第一步的一致的端口

3.參見 (圖-2.1)代碼,如果遠(yuǎn)端使用了hostname配置的hadoop集群,本地電腦設(shè)置/etc/host,

比如:172.100.200.76 hadoop01

然后把配置的遠(yuǎn)端地址172.100.200.76替換成 hadoop01,如圖(圖-2.1)代碼把spark地址也使用hostname

問題5:遠(yuǎn)端使用hive查詢正常,但是本地spark-sql返回?zé)o結(jié)果

? ??解決辦法:

? ?1. 可能是hive表創(chuàng)建的時候指定的格式問題,比如我的日志表用的jsonDer,關(guān)閉spark的convertMetastoreParquet和convertMetastoreOrc (圖-5.1)


圖-5.1

問題6:運行報異常,內(nèi)存溢出或者越界之類的信息

解決辦法:

1.在遠(yuǎn)端spark的conf目錄下分別配置spark-defaults.conf和spark-env.sh

? ? ? ?spark -defaults.conf :? ?spark.driver.memory? ? ? ? ? ? ? 4g

? ? ? ?spark-env.sh :?SPARK_EXECUTOR_MEMORY=4G

2. 代碼中指定內(nèi)存?spark.executor.memory 參見圖 (圖-5.1)

其他注意點:

1.jdk版本問題,可以在pom中和scala_compiler.xml(位置在.idea目錄下)中指定target:jvm-1.8

2.遠(yuǎn)端hadoop全家桶和spark啟動最好是用同一個用戶,比如筆者是用的hadoop

3.運行報錯:Unable to create log directory /xxx/xxx/xx/${user.name},筆者開始還以為是hdfs權(quán)限問題,因為報錯路徑和hdfs的路徑一致,但是hdfs設(shè)置777依然報錯,實際上是本地?zé)o法創(chuàng)建這個目錄(筆者mac系統(tǒng)),自己手動創(chuàng)建這個目錄并給予寫權(quán)限就可以了

4.依賴版本一定要和系統(tǒng)的環(huán)境版本注意保持一致,依賴從maven倉庫中能搜到各種版本,

地址:https://mvnrepository.com/

5.本地開發(fā)完成后,maven打包成jar包,上傳到遠(yuǎn)端服務(wù)器,運行命令:

spark-submit --master yarn --class sparkKafka.App? /home/hadoop/sparkKafka01-1.0.jar

最后附上筆者最后的調(diào)試結(jié)果,執(zhí)行sparksql從hive數(shù)據(jù)倉中撈出日志數(shù)據(jù),如圖(圖-6.1),看到你,整個世界瞬間變美好了,哈哈哈

圖-6.1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容