xxzzycq / spark-2.2

spark-2.2源码分析
Apache License 2.0
0 stars 0 forks source link

SparkSql- spark添加python脚本无法覆盖之前的脚本,导致修改后的脚本无法立即生效 #1

Open xxzzycq opened 6 years ago

xxzzycq commented 6 years ago

表信息: test(id string, name string)

数据:

// 该transform.py功能是id+1 add file "hdfs://ns/python/transform.py" select transform(id) from test using "transform.py"; 查询结果:

// 修改transform.py(功能是id+2)文件再次上传到这个位置时,该tansform没有生效,还是原来的功能 add file "hdfs://ns/python/transform.py" select transform(id) from text using "transform.py"; 查询结果:

xxzzycq commented 6 years ago
  1. spark2.2.0在实现add file功能是,先把文件添加到addedFiles(private[spark] val addedFiles = new ConcurrentHashMap[String, Long]().asScala)中,其中key是文件的路径,value是文件添加的时间戳
  2. 当判断文件路径已经存在的情况下(addedFiles.putIfAbsent(key, timestamp).isEmpty),value不会更 新,这就意味着spark不会再次发送更新后的文件到各个节点,所以再次查询用的是原来的文件。
xxzzycq commented 6 years ago

solved by https://github.com/xxzzycq/spark-2.2/commit/6cc57636f3aaa95d0ff4d0c390c8b43d71fc93e4