爪哇蜂

Results 7 issues of 爪哇蜂

1. 增加Bloom过滤器加速delta读写 Delta Lake 现阶段判定一条数据是不是已经存在是比较暴力的,直接做一次全表join(如果有分区会好点)。这样可以得到待更新记录所在的文件路径。在特定场景(表数据基数很大的情况),这个开销会非常大。一个直观的解决方案是:给每个文件加上布隆过滤器,对每份落地的delta文件生成一个BloomFilter对象记录每条数据的bit位,我们将这类索引信息存储在table path的_bf_index_目录下,当每批数据进来时,先和索引数据进行比较过滤出touch的文件。这样比较优秀的情况下只会touch到某几个文件会大大减少join的数据量。查看:[#11](https://github.com/allwefantasy/delta-plus/pull/11) 2. 优化broadcast:减少广播的数据 一开始我们将索引数据(bloom对象)广播到了所有Executor端,然后每批次foreach进来的数据进行判断记录touch到了哪些文件。这样做不太合理,表数据比较大的时候,广播的数据就会很大,内存比较紧张。解决方案:广播当前批次的数据(每批次数据量总是不大的)。查看:[3787cde](https://github.com/allwefantasy/delta-plus/commit/3787cdef5c5d02e4390a4c414beb40e1c5a23375) 3. 加入RepartitionByRange操作配合Bloom过滤器使用 这个比较适用一些固定的场景,比如你的业务数据是日志型的类似订单记录:基本上只更新最近的记录或者新增。加入partitionByRange会很好的调整数据分布,使用bloom过滤器时,理想状态只会touch到最近的几个文件,能加快delta的查询和写入。查看:[d5ba007](https://github.com/allwefantasy/delta-plus/commit/d5ba007e8ee9915b91d9414d24cb99a9e4ca778a) 4. 控制新文件数与删除文件数一致 将批次数据和touch文件没受影响记录union后一起落地,控制新的文件数与删除的文件数一致。查看:[c17d36b](https://github.com/allwefantasy/delta-plus/commit/c17d36b79357d4f00dbc0de3c935a8952f7e6243) 5. 解决delta并发commit导致批次失败【重试】 如果同步流程和清理流程(清理历史版本)同时commit操作,会冲突导致批次失败。加入重试机制。查看:[4fa7c85](https://github.com/allwefantasy/delta-plus/commit/4fa7c85385c72f5e7d7c955b9c24d01e773c6115) 6. 调整数据分区优化序列化速度 如果是binlog数据源拿到的DataFrame只有一个分区,delta在更新之前需要把binlog的json数据deserialize,当批次内有大数据量时,单线程进行反序列化速度肯定是不够的,导致同步流程产生瓶颈。解决方案:repartition数据,增加处理线程数。查看:[b8c09e7](https://github.com/allwefantasy/delta-plus/commit/b8c09e7c2499b6e0ee8f193d747ab90d39a343ec)

documentation

**在提出此拉取请求时,我确认了以下几点(请复选框):** - [ ] 我已阅读并理解[贡献者指南](https://github.com/eryajf/awesome-github-profile-readme-chinese/blob/main/CONTRIBUTING.md)。 - [ ] 我已检查没有与此请求重复的拉取请求。 - [ ] 我已经考虑过,并确认这份呈件对其他人很有价值。 - [ ] 我接受此提交可能不会被使用,并根据维护人员的意愿关闭拉取请求。

我在启动repl shell时,使用--jars加入mysql connector依赖,在真实运行时还是报了错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver。 运行命令如下: ```shell ./bin/ides-shell --jars /Users/sgr/.ivy2/jars/mysql_mysql-connector-java-5.1.36.jar ``` 执行报错如下:

bug

`python` 作为数据科学家必备的技能,常常用来进行数据挖掘、机器学习等工作。ides为了兼顾集成python为数据挖掘的核心工具,打算在repl模式扩展执行原生python语言的能力。 有两种方案考虑: 1. 开发 `pyides` 客户端,独立支持ides dsl和原始的python语言的运行 2. 在原先`ides-shell` 客户端里实现通过 `%python`命令进入python语言环境,`%` 命令退出python坏境,像这样:

feature

ides自定义了一整套dsl,如(load/save/set/connect...)等语法,[具体参考](https://www.yuque.com/ides/docs/xzfg0p)。 我们希望从语法层原生支持`sql`、`python`等语言的执行,这样可以丰富脚本开发,因为很有可能某些同学习惯使用`sql`或`python`进行数据处理(算法同学同样需要`python`加持)。

feature

csv文件某些文本字段里存在换行符,如: ```csv id,name,desc 1,spark,"spark是一个分布式计算框架" 2,ides,"ides是一个分布式计算框架,解决了统一大数据+AI开发流程, 简化了数据处理、数据分析、数据挖掘、机器学习等过程" ``` > 总共2行数据,第二行存在换行 问题是: 1. 如何正确读取字段存在换行的csv数据? 2. 如何将csv数据保存到hive表中,并能正确解析读写?

question

repl 需要支持 ctrl+c 取消任务/中断running job

bug