前言
总结Spark开发中遇到的异常及解决办法,之前也写过几篇,之所以不再一个异常写一篇博客,是因为现在Spark用的比较熟悉了一些,觉得没必要把异常信息写那么详细了,所以就把异常总结在一篇博客里了,这样既能备忘也方便查找。
1、之前的几篇
more >>
总结Spark开发中遇到的异常及解决办法,之前也写过几篇,之所以不再一个异常写一篇博客,是因为现在Spark用的比较熟悉了一些,觉得没必要把异常信息写那么详细了,所以就把异常总结在一篇博客里了,这样既能备忘也方便查找。
more >>
总结一下Spark Checkpoint 用法及源码,包括RDD和Spark Streaming两种。
more >>作用:持久化数据-将RDD的数据保存到可靠文件系统中(一般是HDFS),以便数据恢复
容错、复用:在Spark程序中,如果某个RDD因为业务逻辑比较复杂,导致Transformation很多,计算很耗时,且该RDD后面用到很多次,那么有可能因为各种原因导致数据丢失、程序失败,之后Spark会重新尝试执行程序(默认三次),就需要重新从头开始执行,而如果执行了Checkpoint,那么就会直接从HDFS文件读取相关数据信息,不需要从头开始执行,节省很多时间。
cache和persist:有了cache和persist,还需要Checkpoint么?需要,因为cache到内存,虽然最快,但是也最不可靠,即使persist到磁盘也不如HDFS文件系统可靠,且能cache到内存最好在内存,因为这样很快,然后和Checkpoint一起用,就能既保证了速度也保证了可靠性。1.1 用法
代码示例
1
2
3
4
5
6
7
8
9 //首先设置Checkpoint路径,这会在hdfs建立文件夹
sc.setCheckpointDir("hdfs://ambari.master.com:8020/spark/dkl/checkpoint/checkpointdemo")
//强烈建议先把rdd持久化到内存、否则保存到文件时会触发一个新的job重新计算
val rdd = sc.parallelize(1 to 1000, 10).cache
//调用checkpoint,标记该RDD要Checkpoint,将checkpointData设为ReliableRDDCheckpointData
//transformation操作,直到action操作才会执行,所以必须在一个action算子之前执行
rdd.checkpoint()
//直到action算子触发job,才会将rdd持久化到对应的hdfs文件中
println(rdd.sum)
之前在大三实习的时候,用的纯Linux(Ubuntu)开发,然后Linux上装了oh-my-zsh。
优点:
1、界面比默认的好看一些
2、敲命令是提示、自动补全、搜索等比较方便好用
Zsh和bash一样,是一种Unix shell,但大多数Linux发行版本都默认使用bash shell。但Zsh有强大的自动补全参数、文件名、等功能和强大的自定义配置功能
摘自https://blog.csdn.net/aoshilang2249/article/details/48681849
因为之前用的Ubuntu,现在用的Centos,所以都写一下
zsh:1
sudo apt-get install zsh -y
git:1
sudo apt-get install git -y
zsh:1
sudo yum install zsh -y
git:1
sudo yum install git -y
记录自己在工作开发中遇到的SQL优化问题
not in:1
select stepId,province_code,polyline from route_step where stepId not in (select stepId from stepIds)
not exists:1
select stepId,province_code,polyline from route_step where not exists (select stepId from stepIds where route_step.stepId = stepIds.stepId)
之前看Scala编程思想学习Scala,只看完了一半多,就没再继续深入学习,导致一些Scala基础知识还不知道,而且过去这么长时间了,之前学过的也遗忘了,所以这里主要记录自己学习Scala时容易遗忘的一些点,以备自己随时查看,增加记忆。这个主要给自己用,不定时更新添加~
setter方法是在getter方法的后面加上_=,后面跟着参数
主构造方法中带有val和var的参数时公有的。然而由于val是不可变的,所以不能像下面这样去使用。1
2
3class Point(val x: Int, val y: Int)
val point = new Point(1, 2)
point.x = 3 // <-- does not compile
不带val或var的参数是私有的,仅在类中可见。1
2
3class Point(x: Int, y: Int)
val point = new Point(1, 2)
point.x // <-- does not compile
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true