Spark 學習中遇到的一些問題
Spark 學習中遇到的一些問題
SparkSQL 相關
在執行 insert 語句時報錯,堆棧信息為:FileSystem closed。常常出現在 ThriftServer 里面。
原因:
由于 hadoop FileSystem.get 獲得的 FileSystem 會從緩存加載,如果多線程一個線程 closedFileSystem 會導致該 BUG
解決方法:
hdfs 存在不從緩存加載的解決方式,在 hdfs-site.xml 配置 fs.hdfs.impl.disable.cache=true 即可
在執行 Sparksql 操作 orc 類型的表時拋出:java.lang.IndexOutOfBoundsException 或者 java.lang.NullPointerException
原因:
分區或者表下存在空的orc文件。該 BUG 在 Spark2.3.0之后才修復
解決方法:
規避解決。修改 ORC 的默認分割策略為:hive.exec.orc.split.strategy=BI 進行解決。Orc 的 split 有3種策略(ETL、BI、HYBIRD),默認是 HYBIRD(混合模式,根據文件大小和文件個數自動選擇 ETL 還是 BI 模式),BI 模式是按照文件個數來分 split
ThriftServer 登錄異常:javax.security.sasl.AuthenticationException: Error validating LDAP user
原因:
是由于密碼錯誤或者 LDAP 服務異常
解決方法:
解決密碼和驗證問題
SparkCore 相關
jar包版本沖突時:java.lang.ClassNotFoundException: XXX
原因:
一般可能是用戶 jar和 Spark jar 沖突
解決方法:
1、最好和 Spark 相關的 jar 進行適配。
2、如果不行可以使用參數:spark.driver.userClassPathFirst和spark.executor.userClassPathFirst 設置為true
集群節點異常導致 Spark job 失敗,如磁盤只讀。
原因:
Spark 是一個高性能、容錯的分布式計算框架,一旦它知道某個計算所在的機器出現問題會依據之前生成的 lineage 重新在這臺機器上調度這個 Task,如果超過失敗次數就會導致 job 失敗。
解決方法:
Spark 有黑名單機制,在超出一定次數的失敗后不會往該節點或者 Executor 調度 Task。設置相應 Black 參數:spark.blacklist.enabled=true
on yarn 啟動 spark-sql 和 spark-submit 時出現:java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig
原因:
和 yarn 相關 Jersey 包沖突
解決方法:
配置上–conf spark.hadoop.yarn.timeline-service.enabled=false
spark
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。