1:报错:Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, most recent failure: Lost task 0.3 in stage 1.0 (TID 143) (hadoop01 executor 3): org.apache.hadoop.hive.ql.metadata.HiveException: Unable to execute method public java.lang.String AES_decrypt_anyKeyIv_UDF.evaluate(java.lang.String,java.lang.String,java.lang.String,java.lang.String) throws java.lang.Exception with arguments {,l3sd6aux76633600,13263791,YRAaS0YtW7unK/xevshtDQ==}:SecurityException: JCE cannot authenticate the provider BC ...... Caused by: cn.hutool.crypto.CryptoException: SecurityException: JCE cannot authenticate the provider BC
原因:Java Cryptography Extension (JCE)和Bouncy Castle (BC)提供者认证相关的问题。
"JCE cannot authenticate the provider BC" 这个错误通常意味着Java环境在尝试使用Bouncy Castle提供的加密算法时,无法验证该提供者的身份。
解决:可以在pom.xml文件中添加以下依赖项:
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.52</version> //具体版本视情况而定
</dependency>
2:错误现象:提交的spark任务运行完成没有报任何错,但是没有数据写入目标表中。经过核验数据统计范围和逻辑是有结果数据的。
解决:在spark-submit的参数中增加hive集群配置文件,如:
--files /etc/hive/conf.cloudera.hive/hive-site.xml \
3:报错:Caused by: java.lang.ClassNotFoundException:org.elasticsearch.spark.sql.DefaultSource
原因:代码中读、写数据到elasticsearch中,我们平常搭建的cdh集群的依赖文件夹中缺少elasticsearch的相关炸包。
解决:到es官网下载es和spark炸包,放到集群依赖文件夹中
我的集群scala版本是2.11。我下载的炸包:elasticsearch-spark-20_2.11-7.10.0.jar
放到:/opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774/lib/spark/jars/elasticsearch-spark-20_2.11-7.10.0.jar
需要重启集群使其生效。
4:报错:java.lang.ClassNotFoundException: scala.Product$class
原因:1.Scala版本不匹配;
2.依赖项缺失:你的项目缺少包含Product类的依赖项,确保包含了scala-library依赖项;
3.类路径问题:确保正确地指向了包含scala.Product的jar包。
解决:我是因为pom依赖中少scala-library依赖,添加后解决问题。(没有时其他类正常跑)
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.11</version> //视自身scala版本而定
</dependency>
5:报错:
Application diagnostics message: Application application_1702035690898_0215 failed 2 times due to AM Container for appattempt_1702035690898_0215_000002 exited with exitCode: 13 Failing this attempt.Diagnostics: [2023-12-09 14:37:04.929]Exception from container-launch. Container id: container_1702035690898_0215_02_000001
解决:找到集群的hive-site.xml我的在cdh集群位置:/etc/hive/conf.cloudera.hive/yarn-site.xml
添加到spark-submit 命令中
#!/bin/bash
date_ymd=`date -d "-1 day" +%Y-%m-%d`
spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 2g \
--driver-cores 2 \
--num-executors 4 \
--executor-memory 2g \
--executor-cores 4 \
--class rp.ods2cdm.dwd_overdue_order_day_idcard_di \
--files /etc/hive/conf.cloudera.hive/hive-site.xml,/etc/hive/conf.cloudera.hive/yarn-site.xml \
hdfs:///user/xx_wj/jar/big_data-var20231209.jar $date_ymd
sleep 2