修正源代码的大背景
在大数据架构Spark的源代码中他们采用addFile方式将许多文档分发送给各结点,当他们要出访Spark工作台中的文档,将采用SparkFiles.get(fileName)找出它的浏览边线,但Spark只提供更多给他们addFile方式,却没提供更多deleteFile。他们晓得addFile是SparkContext类的方式,而SparkContext是Spark机能的主要就出口处。SparkContext代表者了与Spark软件产业的相连,可用作在该软件产业上建立RDD、积攒器和该台表达式。每一JVM根本无法公益活动两个SparkContext。
在SparkContext加进deleteFile方式
下面是SparkContext中addFile的源代码,具体来说他们是不晓得源代码中是是不是操作方式那些文档的,他们将透过写作addFile的源代码来自学是不是去加进deleteFile方式,他们多于晓得是不是加进才晓得是不是去修正它,简而言之Monestier。
透过下面的源代码他们晓得,是采用addedFiles 那个ConcurrentHashMap[用作储存每一动态文档/jar的URL和文档的邻近地区天数戳的
private[spark]valaddedFiles=newConcurrentHashMap[String, Long]().asScala
下面的自学他们已经晓得了加进的方式,然后就是加进deleteFilele了,具体的实现如下:
NettyStreamManager中加进deleteFile方式实现
他们已经了解了在SparkContext加进deleteFile方式,他们了解下NettyStreamManager。NettyStreamManager是StreamManager实现,用作服务于NettyRpcEnv中的文档。在那个管理器中可以注册三种资源,都是由实际文档支持的。
– “/files”:两个扁平的文档列表;作为SparkContext.addFile的后端。– “/jars”:两个扁平的文档列表;作为SparkContext.addJar的后端。– 任意目录;该目录下的所有文档透过管理器变得可用,尊重目录的层次结构。只支持流媒体(openStream)。
他们还是先看addFile的源代码,先看父类RpcEnvFileServer的接口,RpcEnv用来向应用程序所拥有的其他进程提供更多文档的服务器。该file Server可以返回由普通库处理的URI(如 “http “或 “hdfs”),也可以返回由RpcEnvfetchFile处理的 “spark “URI。
2. NettyStreamManager中addFile方式实现
3. 跟addFile一样,先去父类RpcEnvFileServer中加进deleteFile方式
4. 接下来他们将在NettyStreamManager中实现deleteFile方式,如下:
修正Antlr4的SqlBase.g4文档
他们晓得Spark中的SQL解析是透过ANTLR4来解析成语法树的,如果不清楚那个过程,可以写作我的这篇博客【Spark SQL解析过程和Antlr4入门】来了解,所以他们如果要在Spark Sql也支持的话,那么需要修正SqlBase.g4那个文档,加进DElETE
修正SparkSqlParser解析器
找出org.apache.spark.sql.execution.SparkSqlParser类,加进对移除文档的支持,SparkSqlParser是Spark SQL语句的具体解析器,修visitManageResource方式
再找出resources.scala文档
修正SparkSQLCLIDriver
找出org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver 那个类,然后修正
源代码编译
他们将源代码放到linux的服务器中去编译,然后部署
/dev/make-distribution.sh –name2.6.0-cdh5.14.2 –tgz-Pyarn-Phadoop-2.6 -Phive-Phive-thriftserver-Dhadoop.version=2.6.0-cdh5.14.2
验证是否生效
如果你对源代码修正感兴趣,请关注我然后可以获取修正完的源代码
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!