自动草稿

修正源代码的大背景

在大数据架构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

验证是否生效

自动草稿

如果你对源代码修正感兴趣,请关注我然后可以获取修正完的源代码

举报/反馈

1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!