Jdbc连接数据库表名称低级错误

  1. 先检查写入的数据类型与表中栏位类型是否一致
  2. 上面如果一致仍然还有报错的话,这时候检查的是代码中的sql语句

可以发现表名称的后面有小数点和“--”符号,这样子也会导致出现这样子的错误。

Azkaban的执行缺陷

由于Azkaban中的每个job都是一个进程,在Azkaban中判断job成功与否是根据这个进程是否成功执行完成,但是在MR 或者Spark Job执行的过程中,如果代码出错,运行在集群上的任务会停止,并不会有内容写入目标文件中,此时返回给Azkaban的进程是执行成功的,也就是job节点执行成功。这与任务执行的结果相悖。

例如:

在执行某个jar包的过程中时,出现了NullPointException,此时MR作业停止,但是最终Process 显示的为执行成功。并且节点最终执行的结果也为成功:

所以为了防止依赖的节点出现错误,其以下节点仍可运行的情况。需要换一个校验job是否正确执行的维度进行评判,比如检测MR 或者 Spark 任务的log文件是否正确执行等,或者检测集群中的任务是否执行成功。

总结:在执行结束后可以返回hdfs中查询是否有对应的文件生成,如果有则表示成功,没有则表示失败。

Spark 集群模式下全局变量使用情况:

刚开始定义了一个全局变量:

然后在main函数下面重新赋值全局变量的时候出现集群获取不到新赋值的变量。

集群打印日志显示的hbase值依然是 null

修改方法:在main函数中直接定义该常量,就可以接收到新赋值了。

Es创建index的时候:

Index长度问题。先前index = std_new_positiontypeAndposition然而一直创建失败不成功,然后就修改成上述就成功了。

读取hbase表中的数据时候遇到某些数据异常问题:

Hive外部表映射出来的数据看起来也是很正常的数据,但一部数据通过代码没有办法做处理,代码没有问题,最后发现hbase表中的数据异常,数据中存在某些特殊字符(例如:制表符或者空格)肉眼看不到。

关于相同汉字字符串在编码中比较是否相同的时候出现unicode转换数不一样的情况解决:

例如:作为 \u4f5c\u4e3a

\ufeff\u4f5c\u4e3a

相同的汉字“作为“但是unicode不一样导致编码比较出现差异。通过notepad打开源文件然后转换格式为utf-8无BOM的格式即可解决

Spark submit shell命令中的核数跟执行内存的调节:

一个原则,你能使用的资源有多大,就尽量去调节到最大的大小(executor内存;executor cpu core

增加了内存量以后,对性能的提升,有三点:

1、如果需要对RDD进行cache,那么更多的内存,就可以缓存更多的数据,将更少的数据写入磁盘

甚至不写入磁盘。减少了磁盘IO

2、对于shuffle操作,reduce端,会需要内存来存放拉取的数据并进行聚合。如果内存不够,也会写入磁盘。如果给executor分配更多内存以后,就有更少的数据,需要写入磁盘,甚至不需要写入磁盘。减少了磁盘IO,提升了性能。

3、对于task的执行可能会创建很多对象。如果内存比较小,可能会频繁导致JVM堆内存满了,

然后频繁GC,垃圾回收,minor GC和full GC。(速度很慢)。内存加大以后,带来更少的GC,垃圾回收,

避免了速度变慢,性能提升

问题一:eclipse的maven工程在构建的时候报了source 7 或更高版本来支持diamon的运算符。

解决方法:在pom.xml中添加

Spark:java.net.BindException: Address already in use: Service 'SparkUI' failed after 16 retries!

错误原因:

每一个Spark任务都会占用一个SparkUI端口,默认为4040,如果被占用则依次递增端口重试。但是有个默认重试次数,为16次。16次重试都失败后,会放弃该任务的运行。

解决方法

初始化SparkConf时,添加conf.set(“spark.port.maxRetries”,“100”)语句

使用spark-submit提交任务时,在命令行中添加-Dspark.port.maxRetries=100

在spark-defaults.conf中添加spark.port.maxRetries 100

SparkStreaming读取Kakfa数据时发生OffsetOutOfRangeException异常

解决方案:Kafka consumer中设置fetch.message.max.bytes为大一点的内存

比如设置为50M:1024*1024*50

fetch.message.max.bytes=52428800

解决方法:

在程序中给Configuration做以下设置:

conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem")

git提交的时候 this exceeds file size limit of 100.0 MB

Github只允许上传最大100MB的文件,如果超过,则会被server reject

则需:

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch  target/lib/spark-assembly-1.6.1-cdh5.3.2-hadoop2.5.0-cdh5.3.2.jar"  --prune-empty --tag-name-filter cat -- --all

git commit --amend -CHEAD

git push origin master

Maven build的java普通工程的jar包想在linux上面使用shell命令运行jar包的方法:

第一种方法:shell命令执行

例如:

Nohup java -cp  /home/hadoop/azkaban/testjobforshenzhonghu/patternToRedis/pattern/lib/commons-pool2-2.4.2.jar:/home/hadoop/azkaban/testjobforshenzhonghu/patternToRedis/pattern/lib/junit-3.8.1.jar:/home/hadoop/azkaban/testjobforshenzhonghu/patternToRedis/pattern/lib/jedis-2.9.0.jar:/home/hadoop/azkaban/testjobforshenzhonghu/patternToRedis/pattern/lib/cn.com.cennavi-0.0.1-SNAPSHOT_beijing.jar cn.com.cennavi.java.WriteRedis_beijing >beijing.log &

Java -cp 依赖的jar1:依赖的jar2:.....:工程jar包 主函数名 linux系统用:分割,windows用;

第二种方法;修改pom.xml文件,使其build的时候可以把主函数告知到jar中

<build>

<sourceDirectory>src/main/java</sourceDirectory>

<testSourceDirectory>src/test/java</testSourceDirectory>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>3.0.2</version>

<configuration>

<archive>

<manifestEntries>

<Class-Path>spark-assembly-1.6.1-hadoop2.5.0-cdh5.3.2.jar scala-reflect-2.10.3.jar</Class-Path>

</manifestEntries>

<manifest>

<addClasspath>true</addClasspath>

<!--<classpathPrefix>lib</classpathPrefix>--> <!--前缀,例如配置lib,则MANIFEST中Class-Path: lib/scala-library-2.10.4.jar-->

<mainClass>cn.com.cennavi.java.WriteRedis_liuzhou</mainClass>

</manifest>

</archive>

</configuration>

</plugin>

</plugins>

</build>

Job aborted due to stage failure: Task serialization failed: java.lang.StackOverflowError

java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1506)

java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1429)

java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175)

java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1375)

这种错误报出是代码当中内存溢出原因导致的,检查代码中使用内存的步骤,进行修改,当时报这个错误的原因是:

是这个原因,计算半个月的hdfs数据不报错,但是计算一个月的数据的时候这个union操作就会使用的内存超过自己的配置就出现了这个错误。当时解决方法就是控制每次计算半个月的数据或者更低的数据。

Exception in thread "Thread-0" java.lang.RuntimeException: Job HistoryCntfToLocal does not have cancel method cancel

24-10-2018 14:18:30 CST HistoryCntfToLocal ERROR - at azkaban.jobtype.JavaJobRunnerMain.cancelJob(JavaJobRunnerMain.java:249)

24-10-2018 14:18:30 CST HistoryCntfToLocal ERROR - at azkaban.jobtype.JavaJobRunnerMain$1.run(JavaJobRunnerMain.java:78)

解决方法:(1)缺少jar包,把与这个工程相类似的工程使用到的jar包全部导入到该工程下面进行引用。完美解决,但是还是不知道缺少了什么jar包。

  1. 检查读取的配置文件(比如 spark kafka 其他的配置文件)是否路径有错误

ERROR Failed to set setXIncludeAware(true) for parser

解决方法:jar包冲突

删除自己的xercesImpl.jar,用jdk自身的编译器,问题解决了

java.io.InvalidClassException: ** local class incompatible: stream classdesc serialVersionUID = -9117779196120965598, local class serialVersionUID = 2841008943488659566

解决方法:

1、spark运行的jar包的类和集群上的jars包不一致

在运行spark程序的时候,需要把运行的jar包上传到集群上,即通过sparkconf.setJars()将jar包里的类上传到集群,并分散到各个Worker节点,才能实现并行处理。

所以要保证命令行运行的jar(java -jar …或者spark-submit…)和集群上设置的sparkconf.setJars()要是同一个jar包。

  1. 编译运行的类的jdk版本和spark集群上的jdk版本不一致导致的。

修改jdk的编辑路径重新编译打包项目,完美解决

java.lang.OutOfMemoryError: Java heap space

什么都不要去改,无疑问的就是代码中出现一个很大的变量导致内存溢出了,比如说spark中的广播变量特别的大,消耗很大的内存,这时候直接就是修改jvm的参数:

比如我之前的参数:Xmx: 1024m Xms:512m

修改之后 

完美解决

工作中遇到问题以及解决方法相关推荐

  1. git 版本控制器 初学习,工作中的问题及其解决方法

    one  day 1.  下载安装git控制器 >>>>>>(测试环境 window10)Git下载地址https://git-scm.com/downloads ...

  2. Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

    Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...

  3. vac服务器未响应,csgo国服游戏停止工作、未响应的解决方法

    CSGO是一款玩家非常喜爱的射击游戏,但玩家常常面临的停止工作的现象,有时会跳出.未响应,那么应该如何解决呢?下面小编带来了csgo国服游戏停止工作.未响应的解决方法,希望对大家有所帮助. 游戏停止工 ...

  4. 在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法

    在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法 参考文章: (1)在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的 ...

  5. CentOS7安装CDH 第三章:CDH中的问题和解决方法

    CentOS7安装CDH 第三章:CDH中的问题和解决方法 参考文章: (1)CentOS7安装CDH 第三章:CDH中的问题和解决方法 (2)https://www.cnblogs.com/yang ...

  6. kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition

    kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition 参考文章: (1)k ...

  7. Windows10家庭版的功能中没有Hyper-V的解决方法

    Windows10家庭版的功能中没有Hyper-V的解决方法 参考文章: (1)Windows10家庭版的功能中没有Hyper-V的解决方法 (2)https://www.cnblogs.com/gu ...

  8. windows7 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    windows7 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法 参考文章: (1)windows7 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求 ...

  9. mysql开发问题解决_开发过程中mysql常见问题的解决方法

    本篇文章给大家带来的内容是关于开发过程中mysql常见问题的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 记录开发过程中遇到mysql相关的问题以及解决方法,长期更新. 远 ...

最新文章

  1. Request.ServerVariables获取环境变量
  2. 从ReentrantLock的实现看AQS的原理及应用
  3. block的一些注意事项
  4. python abs()函数是什么意思?
  5. rsync推拉模型及结合inotify实现推模型自动同步
  6. 基于Mint UI和MUI开发VUE项目一之环境搭建和首页的实现
  7. 缓存击穿/穿透/雪崩
  8. MATLAB 图形着色
  9. knn算法python理解与预测_理解KNN算法
  10. 开源通用爬虫框架YayCrawler-页面的抽取规则定义
  11. MCollective架构篇1-MCollective架构的引入
  12. 主动訪问用户数据的背后是品牌战略
  13. Linux C编程与Shell编程在开发实用工具方面的相同点总结
  14. ArcGIS软件的基本使用
  15. Java调用soap协议的webservice
  16. 什么是PKI 体系(数字证书种类)
  17. 山东省第七届ACM大赛E题题解
  18. mongodb mapreduce分析
  19. 一本通 3.1 例 1」黑暗城堡
  20. 云桌面真的可以完全代替PC电脑吗?

热门文章

  1. 优衣库46万客户信息遭泄露,这些年,你的信息还被谁泄露过?
  2. CodeBlocks中文汉化Code::Blocks 10.05 中文版
  3. Java之IK 分词器
  4. echarts柱状图的样式调整及应用
  5. SAP 获取本机信息(IP及电脑名称)
  6. 地理信息系统(GIS)的前沿技术综述
  7. sqlserver数据批量插入
  8. AMT控制器——基于simulink的AMT自动变速汽车换档智能控制
  9. c 与java通信_javaSocket与C通信
  10. HDFS常用命令汇总