金融科研工具箱:数据储存与管理

一切的开始

最近做个项目,遇到了需要对日数据进行运算并对齐的公告日期,平常一直用csv+pandas来处理,但这一次数据量比较大,需要进行文件合并、索引、计算、更新等操作,pandas的处理太占内存,且索引查询略复杂,遂想起Hadoop分布式文件系统(HDFS)适合海量数据高吞吐场景,翻阅了一下发现HDFS只能append不能修改,且查询需要调用其他框架工具,遂转向面向文档数据库MongoDB,了解了一下发现不支持事务处理,join查询也比较差。一想到以后还有很多类似需求场景,觉得应该写一篇文章梳理一下数据储存与管理工具

需求描述

  1. 本地化大量数据储存(最大单个表千万级数据量)
    一般情况下需要从csmar或resset上下载数据本地化,希望本地化之后能clone一个常用数据数据库,每次要用的时候,筛选特定时间段和字段导出就行,就不用每一次都跑csmar下载,甚至一些数据清洗能够在导出数据的时候同步完成。(这里没有想clone整个csmar的意思,只是说每一次都要校园网下载不方便,本地化之后随时随地都能导出)
  2. 不同数据表之间的join查询
    典型场景:事件研究时要把股票日数据和事件数据按时间戳匹配;亦或者是同一股票的差异化数据在不同表单,需要提取到同一个表中(特殊情况下涉及夸文件多维数据的复杂查询)
  3. 索引或遍历数据表,对特定字段进行运算
    典型场景:逐个截面进行遍历计算;按特定规则选取个别截面再遍历进行计算。(此处点名批评python的遍历效率)
  4. 处理好的数据导出到stata、python、MATLAB等软件

解决方案

  1. csv、excel等文件储存,编程语言读取和运算

  2. Hadoop平台HDFS文件储存,编程语言读取运算

  3. 关系数据库如MySQL储存查询,导出数据到编程语言平台

  4. 非关系数据库如MongoDB储存查询,导出数据到编程语言平台

  5. 其他平台和软件软件诸如OpenRefine、Spark、Apache Hive、Kafka等

方案权衡

  1. Excel文件太占空间,内存溢出的情况比比皆是,而且复杂格式读取容易出错。
  2. CSV文件结构简洁,但数据量上去之后读取速度堪忧,百万级的读取就有点慢,且实际使用中查询操作依赖于pandas,不排除C++效率提高很多,但结构化查询不是很顺手。
    (如果选择CSV的话推荐python下的paratext库,能让读写速度接近I/O峰值速度)
  3. Hadoop平台更注重大数据分布式储存和读取,试用感觉读取速度比csv快50倍,但已储存数据无法修改,只能追加新条目。这一点其实可以接受,主要是查询数据需要spark、hive等平台的接入,要么就是导入编程语言平台再用诸如pandas之类的工具,太复杂了点,而且需求也还不到数据量过亿的级别。
  4. MySQL在处理大量数据的时候有明显卡慢,但事务关系处理和稳定性是优势。鉴于前面所说的需求,MySQL是一个较好选择
  5. MongoDB在大量非结构数据作业情景下是有优势的,但面向文档型数据库注定了关系结构的操作很吃力,鉴于有join查询需求,MongoDB只能排除。但如果要做文本提取或非结构化数据还是很好用的,可以简单看作另类json
  6. 其他平台和软件软件重点吐槽谷歌的openrefine,其内存占用实在是太大了,20M的CSV文件需要700M内存,但不得不说可视化数据清洗、正则表达和OpenRefine Expression Language (GREL)语言支持还是给了很高的上限的,可视化大数据操作逻辑特别适合新手进行大数据清洗。

更新:多维数据跨表join思路

以前总喜欢一步到位,多维key同时匹配,后来在实践和思考中发现大部分需求都可以通过解构降维成二维表再按匹配规则合并。不一定需要数据库

结语

本文是一篇个人总结,目的不是深入介绍某一个工具,而是展示针对金融科研需求的工具选择过程,并列举一些笔者知道的工具方向,可以把此文看作目录,去深入了解各个数据工具。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值