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
apache
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=
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
以上方法經測試均無效,正在尋求其它方案…