在使用Spark进行数据处理的时候,需要对数据中的时间进行格式化,我首先使用的是new SimpleDateFormat(”yyyy年MM月dd日,E,HH:mm:ss”),因为每条数据都需要进行格式转换所以将转化过程疯转成一个工具类,为了避免频繁的NEW出对象,将new提到方法外面,但是在运行过程中出现了线程安全问题,因为Spark执行程序的时候是多线程处理的,所以,单纯的创建一个对象是不够的,很容易就出现了线程安全问题,但是如果将new SimpleDateFormat放入方法中,那么每次处理数据都会创建一个新的SimpleDateFormat。可以用下面方法解决。
scala中有个一个线程安全的格式化时间方法:
val fdf = FastDateFormat.getInstance("yyyy年MM月dd日,E,HH:mm:ss")
使用这样的方法格式化时间是线程安全的。
» 订阅本站:https://www.kgraph.cn
» 转载请注明来源:九五青年博客 » 《Scala使用SimpleDateFormat方法出现线程安全问题的解决办法》