如何缓存hbase数据以减少下次取数据的时间
缓存从hbase取得的数据的好处是显而易见的,缓存到本地以后,如果下次的输入能够直接从已缓存的本地文件中取得数据就无需再次访问hbase数据库,这样一来数据量大的话可以节省大量的访问hbase数据库的时间。
function enterSearch(plate)
{
searchPlateBegin = new Date();
var plateArray = new Array();
var convertReverseArray = new Array();
if(regex_cache[plate] == null)
{ var strRegEx = convertInput(plate);
var regEx = new RegExp(strRegEx);
regEx.compile(regEx); for (var i = 0;i < keyArrayConvert.length;i++)
{
if (regEx.test(keyArrayConvert[i]))
{
convertReverseArray.push(keyArray[i]);
plateArray.push(keyArrayConvert[i]);
}
} var cacheFileName = (++write_regex_cache_count).toString() + ".json"; fs.writeFile("./cache/"+cacheFileName,JSON.stringify(convertReverseArray),function(err){
if(err) throw err;
regex_cache[plate] = "./cache/"+cacheFileName; }); var cacheFileName_convert = (++write_regex_cache_count_convert).toString() + "_decoded.json"; fs.writeFile("./cache/"+cacheFileName_convert,JSON.stringify(plateArray),function(err){
if(err) throw err;
regex_cache_convert[plate] = "./cache/"+cacheFileName_convert; }); searchPlateEnd = new Date(); }
else
{
searchPlateEnd = new Date();
convertReverseArray = JSON.parse(fs.readFileSync(regex_cache[plate],'utf8'));
plateArray = JSON.parse(fs.readFileSync(regex_cache_convert[plate],'utf8')); }
在这里就是做了一个缓存,把convertReverseArray以不同的文件名的形式缓存到cache目录下。每输入一个plate,先去到regex_cache[plate]中寻找有无数据,如果没有数据说明本地没有相对应的数据,就会调用正则表达式从keyArrayConvert中找到相匹配的数据放至regex_cache[plate]中,如果该数据已存在说明本地文件已有该数据,这是跳到else语句执行相关的操作,如果keyArrayConvert包含的数据巨大的话,采用这种方式可以节省大量时间。
如何缓存hbase数据以减少下次取数据的时间的更多相关文章
- highcharts图表的上钻下钻,下钻数据,与回取数据
通常图表在下钻之后,会点返回,返回之后,可能需要调用上钻回调事件,在drillup事件里获取上钻数据,然后对需要联动进行操作: chart: { type: 'column', events: { d ...
- scrapy过滤重复数据和增量爬取
原文链接 前言 这篇笔记基于上上篇笔记的---<scrapy电影天堂实战(二)创建爬虫项目>,而这篇又涉及redis,所以又先熟悉了下redis,记录了下<redis基础笔记> ...
- m_Orchestrate learning system---三十五、php数据和js数据的解耦:php数据(php代码)不要放到js代码中
m_Orchestrate learning system---三十五.php数据和js数据的解耦:php数据(php代码)不要放到js代码中 一.总结 一句话总结:也就是以html为中介,用html ...
- HBase指定大量列集合的场景下并发拉取数据时卡住的问题排查
最近遇到一例,HBase 指定大量列集合的场景下,并发拉取数据,应用卡住不响应的情形.记录一下. 问题背景 退款导出中,为了获取商品规格编码,需要从 HBase 表 T 里拉取对应的数据. T 对商品 ...
- NET 5 爬虫框架/抓取数据
爬虫大家或多或少的都应该接触过的,爬虫有风险,抓数需谨慎. 爬虫有的是抓请求,有的是抓网页再解析 本着研究学习的目的,记录一下在 .NET Core 下抓取数据的实际案例.爬虫代码一般具有时效性,当 ...
- windows环境下nutch2.x 在eclipse中实现抓取数据存进mysql详细步骤
nutch2.x 在eclipse中实现抓取数据存进mysql步骤 最近在研究nutch,花了几天时间,也遇到很多问题,最终结果还是成功了,在此记录,并给其他有兴趣的人提供参考,共同进步. 对nutc ...
- 借助Chrome和插件爬取数据
工具 Chrome浏览器 TamperMonkey ReRes Chrome浏览器 chrome浏览器是目前最受欢迎的浏览器,没有之一,它兼容大部分的w3c标准和ecma标准,对于前端工程师在开发过程 ...
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
- Python分页爬取数据的分析
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 向右奔跑 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
随机推荐
- Drupal service module 介绍
https://www.ostraining.com/blog/drupal/services/ https://www.drupal.org/node/1246470 https://www.dru ...
- 大文件LOG持续输出
作了两个版本,一是websocket输出,一是直接显示指定行数. class WebSocketHandler(tornado.websocket.WebSocketHandler): file_co ...
- Truck History(最小生成树)
poj——Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27703 Accepted: 10 ...
- ruti
也许我可以说除了我把+号写成了-号这个程序几乎是完美的
- hadoop之hdfs------------------FileSystem及其源码分析
FileSystem及其源码分析 FileSystem这个抽象类提供了丰富的方法用于对文件系统的操作,包括上传.下载.删除.创建等.这里多说的文件系统通常指的是HDFS(DistributedFile ...
- cocos2d-x step by step(2) 鼠标事件,键盘事件,等等事件
各种小控件加载进去了,那么问题来了,这些东西如何接受事件呢? good job,let us find the answer 首先我们去看文档,官方尼玛有好多文档,而且大,全,详细,感觉还是不错的 h ...
- Caused by: java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录)
解决方法:修改jmeter.properites: server.rmi.ssl.disable=true,关闭ssl功能 参考: https://blog.csdn.net/nielinqi520/ ...
- 解决js输出汉字乱码的问题
近期做安卓开发.安卓client调用server页面,可是server编码为gbk,安卓编码为utf-8.导致js输出内容报错,前期的做法是调整js文件编码.可是会生成两个版本号,非常不方便,最后找到 ...
- DIV浮动IE文本产生3象素的bug
描写叙述:DIV浮动IE文本产生3象素的bug 左边对象浮动.右边採用外补丁的左边距来定位,右边对象(div)会离左边有3px的间距 复现:在开发者工具里把文本模式设置了杂项后会出现3像素的bu ...
- css3 - 动态伪类
动态伪类分为以下几种: 1. hover(经过) 2. active(点击后) 3. focus(聚焦) - input专用 4. visited(访问后) 使用: