豆子怎么好吃?
2014年开始,我在一家互联网公司担任高级技术工程师。由于工作需要,经常需要处理大数据量,而且要求快,于是我就自学了Spark和Scala。 学了一阵子之后,我突发奇想,用Spark做一件事——根据用户输入的主食名称,返回相应的热量值。比如你输入“米饭”,就显示米饭的热量;如果输入“馒头”,就显示馒头的热量……这样,通过计算不同的主食热量,就可以减肥了(捂脸)。 于是我用开源的Spark做了这样一个网站: 然后给公司内部的人试用了一下,大家都觉得挺好用的,于是就上线了。后来这个网站的流量一直不错,为我提供了稳定的流量来源。更神奇的是,在这个网站上,我还采集到了知乎上的一个问题——“有哪些「非典型性」的数据分析案例?”,以及这个问题下的所有答案。 这个网站使用了Elasticsearch来存储数据,每天产生的搜索请求超过百万条,但是数据量并不大,全部加起来只有500w条记录而已。但是为了维护这样的一个网站,我还是花了不少心思的。
首先就是数据处理的效率问题。因为每天都有大量的用户输入,如果全手工来做的话,工作量会很大。于是我开发了一个简单的后台,使用Ruby on Rails框架来实现。虽然简单,但却足够实用,能够轻松完成日常的任务。下图中是我使用Rails框架来完成对用户数据的入库操作。
除了效率外,网站还面临着数据质量的问题。为了保证数据的正确性,我在代码中加入了一定的校验规则。如果用户输入的数据有错误,就会提示错误信息;如果输入的数据存在冲突,也会提醒我已经有多少人和您有相同的发现,欢迎争辩(嘻嘻)。 为了能够让不会Scala的人也能方便地在浏览器中测试我的网站,我还专门写了一个前端页面,能自动识别用户的操作系统,并相应地给出下载screener的链接(一个在浏览器中运行的工具)。只要输入网址就可以了,非常方便。最终,这个网页成为了我项目中最高效、最容易被外部人士使用的部分。