陋室快报
陋室快报是对陋室推荐栏目更新优化后的版本,更快更准的给大家推荐优质信息,频率预计是一周一次。敬请关注。栏目介绍:陋室快报栏目介绍。
近期,我再次总结了我的历史文章,累积起来有50w字,百余篇文章了,有兴趣可以拿来看看,获取方式:七夕清流,百余篇累计50w字文章合集发布。
往期回顾:
算法工程师除了接触算法,另一个需要接触的就是各种数据了,俗话说巧妇难为无米之炊,这里就给大家介绍一些算法工程师常用的数据工具吧,相信很多都是大家熟悉的,如果不熟悉,大家可以按需抽空学起来~
本地数据
算法要用数据来进行训练,更多的就是用本地的数据,因此本地的数据存储是最基本的,来看看都有哪些形式:
纯文本txt:超高的灵活度,但是需要自己写解析脚本,处理的难度也较高。
csv/tsv:比纯文本好,灵活度能基本保持,解析脚本也比较简单。
Excel:最适合在windows环境阅读的数据结构,但是数据有上限约束,而且读取和写入需要的代码量不少,linux环境不好阅读。
json:一种比较规整规范的数据,结构上灵活性可以说是拉满,但是编辑起来的成本比较高,不符合结构规则就读不了了,用的比较少,一般是配置文件之类的会用到,少量复杂数据也可能会用到。
这些本地的数据结构都很简单,读写总体还是比较方便的,而且因为是离线,所以用起来不需要网络。代码读取上,有一些简单的python基础就能用了,所以非常简单。
大数据存储
一些比较大的数据,不适合长期放在本地,就可以考虑放在类似“网盘”的地方了,当需要的时候就可以使用,目前能承担这个功能的,我知道的有两个,分别是ocs和hdfs,前者我用过,但是临时存储大都是用后者,所以这里聊聊hdfs。
这里的hdfs大部分情况,并不需要我们自己搭建,公司会有平台部门或者其他大佬搭建好,我们只需要会使用即可,主要就是增删改,以及上传下载。
百科:https://baike.baidu.com/item/hdfs/4836121?fr=aladdin
linux环境下的命令:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
python库:https://pypi.org/project/hdfs/
有这些知识,hdfs估计就够用了。
另外,说到了hdfs,就还想聊hive,这些都是hadoop全家桶里的东西,某些情况上看hdfs其实是一个升级版,有更规范的数据后,理论上是应该支持更复杂的查询的,这里hive就实现了这个功能。
pyhive:https://github.com/dropbox/PyHive
常用的数据库
这些数据库,就是经常给我们存储和使用数据的了,常见的是在线服务的使用,用来做一些查询的工作,这些工具能在线数据快速读取,背后也支持快速更新。
mysql
入门级数据库,专门学过数据库的就应该知道,需要通过sql来对数据进行增删改查处理,所以灵活性很高**(强烈建议大家学一下sql整套逻辑体系,对数据的抽取和使用理解有很大好处)**。这个在python也有一些对应的包,windows可以参考navicat(请大家尽量支持正版),linux有mysql客户端就行。至于怎么搭,平时自己玩其实没太大必要,所以可以先跳过。
pymysql:https://github.com/PyMySQL/PyMySQL
linux mysql命令:https://www.cnblogs.com/mylqm/p/14953076.html
redis
redis同样是一个非常常用的工具,他本身出现的目的很简单,就是为了查询,因为他是那种k-v的查询,即根据门钥匙开锁的,一个锁对一个门,这个查询的速度非常快,当然会缺乏一些灵活性,但是在线往往是需要这种速度的,例如缓存cache就用的他,我们要学会的是怎么存取,以及一些存取的规则。
redis官网:https://redis.io/
redis教程:https://www.runoob.com/redis/redis-tutorial.html
python的redis:https://pypi.org/project/redis/
mongodb
mongo是一种非关系的数据库,灵活性更好,在线也经常会使用,有兴趣可以get起来。
mongodb官网:https://www.mongodb.com/
mongodb教程:https://www.runoob.com/mongodb/mongodb-tutorial.html
pyhon的mysql:https://pypi.org/project/pymongo/
elastic search
就是所谓的ES,这个在搜索中非常常用,是一个非常完整的搜索引擎,本身在线支持倒排索引,所以非常方便。
ES的官方文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
python版:https://pypi.org/project/elasticsearch/
小结
上述各种工具,其实都比较基本,我们作为算法而非工程,对一些数据库中间件之类的能力要求不太高,但我们不应设置边界,至少也应该了解这些工具,了解一些基本的增删改查,这种更有利于我们的边界扩大,了解更多。这里,我感觉大家最好从这两个方面去了解更为合适:
数据类型。了解每个数据库中存储各个数据类型,这样在我们存取的时候有初步的了解。
增删改查。不要求搭建,但是使用还是得会用的,增删改查就是数据库最基本的功能,我们都需要学会使用。