难度:中等
时长:175 小时
Apache Parquet 是一种用于表格数据的二进制数据格式。它具有压缩和磁盘上数据集内存映射的功能。在 Julia 中实现一个不错的 Parquet 实现很可能具有很高的性能。它将作为以二进制格式分发表格数据的标准格式非常有用。存在一个 Parquet.jl 包,它具有 Parquet 读取器和写入器。它目前在非常基础的层面上符合 Julia 表格文件 IO 接口。它需要更多工作来添加对关键元素的支持,这些元素将使 Parquet.jl 可用于快速大规模并行数据处理。每个目标都可以作为单个、短期(175 小时)项目来实现。
延迟加载和对核心外处理的支持,以及 Arrow.jl 和 Tables.jl 集成。改进 Parquet 读取器和写入器对大型文件的可用性和性能。
从云数据存储读取和写入数据,包括对分区数据的支持。
支持缺失数据类型和编码,使 Julia 实现功能齐全。
资源
该 Parquet 文件格式(互联网上还有许多关于 Parquet 存储格式的文章和演讲)
推荐技能: 熟悉 Julia 语言、Julia 数据栈以及编写高性能 Julia 代码。
预期成果: 取决于我们商定的具体项目。
导师: Tanmay Mohapatra
难度:困难
时长:175 小时
DataFrames.jl 是 Julia 中更流行的表格数据类型实现之一。它支持的功能之一是数据帧连接。但是,需要做更多工作来改进此功能。该项目的具体目标是(项目范围内的最终目标列表可以在稍后确定)。
通过连接完全实现多线程支持,减少使用连接算法的内存需求(这还应该提高它们的性能),验证替代连接策略与当前使用策略相比的效率,并实现它们以及根据传递的数据选择正确连接策略的自适应算法;
实现允许对非等键进行高效匹配的连接;应特别注意对作为日期/时间和空间对象的键进行匹配;
实现允许基于匹配键和指定何时应执行更新的条件,通过另一个数据帧中存储的值对一个数据帧的列进行就地更新的连接;
实现比当前可用的机制更灵活的机制,允许在执行连接时定义输出数据帧列名。
资源
推荐技能: 熟悉 Julia 语言、Julia 数据栈以及编写高性能多线程 Julia 代码。有代码基准测试和编写测试的经验。了解连接算法(例如,在 DuckDB 等数据库或其他表格数据处理生态系统(例如 Polars 或 data.table)中使用的算法)。
预期成果: 取决于我们商定的具体项目。
导师: Bogumił Kamiński