1. 程式人生 > >spark作業常見異常

spark作業常見異常

1、java.lang.IllegalArgumentException: System memory 462225408 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration.
解決:可能跟driver.memory無關,
先設定應用程式的 VM options

idea的設定路徑在:Run -Edit Configurations-Application選擇對應的程式,設定VM options,如下:

-Xms256m -Xmx1024m

2、cannot assign instance of scala.collection.immutable.List S e r i a l i

z a t i o n P r o x y
t o f i e l d o r g . a p a c h e . s p a r k . r d d . R D D . o r g SerializationProxy to field org.apache.spark.rdd.RDD.org apache s p a r k spark rdd R D D RDD $dependencies_ of type scala.collection.Seq in instance of org.apache.spark.rdd.MapPartitionsRDD :
問題很可能在使用spart-submit提交程式時,環境不一致導致的
比如

 import org.apache.spark.{SparkConf, SparkContext}
    object WordCount {
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("wordcount").setMaster("spark://master:7077")
        val sc = new SparkContext(conf)
        val lines = sc.textFile("hdfs://node1:8020/user/spark/data/a.scala")
        lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).foreach(println _)
        sc.stop()
  }
}

在idea中執行時則會報以上異常
應將setMaster設定為local[2] 本地模式執行
用URL則需在叢集執行
另一種更復雜的情況:https://www.cnblogs.com/benfly/p/9072957.html
3、WARN NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java
網上辦法:
原因是hadoop-2.6.0.tar.gz安裝包是在32位機器上編譯的,64位的機器載入本地庫.so檔案時出錯,不影響使用。
解決:
1)重新編譯原始碼後將新的lib/native替換到叢集中原來的lib/native
這裡替換完畢,可是還是出現。
2)修改hadoop-env.sh ,增加
export HADOOP_OPTS="-Djava.library.path= H A D O O P P R E F I X / l i b : HADOOP_PREFIX/lib: HADOOP_PREFIX/lib/native"
上面解決辦法比較正統的,當然還有其他辦法
修改一下core-site.xml這個配置
在這裡插入圖片描述
3)在.bashrc中加入如下配置:
vim ~/.bashrc

export HADOOP_HOME=/home/hadoop/hadoop-2.6.4
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

4)直接在log4j日誌中去除告警資訊。在//usr/local/hadoop-2.5.2/etc/hadoop/log4j.properties檔案中新增

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

以上方法經測試均無效,正在尋求其它方案…