如何缓存hbase数据以减少下次取数据的时间

缓存从hbase取得的数据的好处是显而易见的,缓存到本地以后,如果下次的输入能够直接从已缓存的本地文件中取得数据就无需再次访问hbase数据库,这样一来数据量大的话可以节省大量的访问hbase数据库的时间。

 1 function enterSearch(plate)
 2     {
 3         searchPlateBegin = new Date();
 4         var plateArray = new Array();
 5         var convertReverseArray = new Array();
 6         if(regex_cache[plate] == null)
 7         {
 8
 9             var strRegEx = convertInput(plate);
10             var regEx = new RegExp(strRegEx);
11             regEx.compile(regEx);
12
13
14             for (var i = 0;i < keyArrayConvert.length;i++)
15             {
16                 if (regEx.test(keyArrayConvert[i]))
17                 {
18                     convertReverseArray.push(keyArray[i]);
19                     plateArray.push(keyArrayConvert[i]);
20                 }
21             }
22
23             var cacheFileName = (++write_regex_cache_count).toString() + ".json";
24
25             fs.writeFile("./cache/"+cacheFileName,JSON.stringify(convertReverseArray),function(err){
26                 if(err) throw err;
27                 regex_cache[plate] = "./cache/"+cacheFileName;
28
29
30             });
31
32             var cacheFileName_convert = (++write_regex_cache_count_convert).toString() + "_decoded.json";
33
34             fs.writeFile("./cache/"+cacheFileName_convert,JSON.stringify(plateArray),function(err){
35                 if(err) throw err;
36                 regex_cache_convert[plate] = "./cache/"+cacheFileName_convert;
37
38             });
39
40             searchPlateEnd  = new Date();
41
42         }
43         else
44         {
45             searchPlateEnd  = new Date();
46             convertReverseArray = JSON.parse(fs.readFileSync(regex_cache[plate],‘utf8‘));
47             plateArray = JSON.parse(fs.readFileSync(regex_cache_convert[plate],‘utf8‘));
48
49         }

在这里就是做了一个缓存,把convertReverseArray以不同的文件名的形式缓存到cache目录下。每输入一个plate,先去到regex_cache[plate]中寻找有无数据,如果没有数据说明本地没有相对应的数据,就会调用正则表达式从keyArrayConvert中找到相匹配的数据放至regex_cache[plate]中,如果该数据已存在说明本地文件已有该数据,这是跳到else语句执行相关的操作,如果keyArrayConvert包含的数据巨大的话,采用这种方式可以节省大量时间。

时间: 2025-01-06 16:42:36

如何缓存hbase数据以减少下次取数据的时间的相关文章

mysql 在数据表中随机取数据或随机排序

最近遇到一个需求,就是随机取数据,本着拿来主义的精神,网上找了找,基本上都是这个下面这个内容,但是并不能让人满意: 1.select * from users order by rand() LIMIT 1 2.SELECT * FROM users  AS t1  JOIN (SELECT ROUND(RAND() * ((SELECT MAX(userId) FROM `users`)-(SELECT MIN(userId) FROM users))+(SELECT MIN(userId)

H5页面的跨webview预拉取数据尝试

对于传统的页面模型来说,数据的拉取+渲染模型如下: 在页面的head部分,使用jsonp预拉取cgi资源,然后在资源加载完成之后,检查预拉取的数据是否已经返回,如果已返回,则直接用该数据渲染(避免了先用缓存数据渲染再用cgi数据渲染导致的二次刷新),否则才用缓存数据渲染. 对于上面的优化方式,我们可以用于独立页面的首屏数据渲染中,但是对于由手Q中一个webview内打开的新webview里的H5页面,是否有更好的方法呢? 当我们通过点击操作,在webview内调用手Q的openUrl接口打开新的

使用Apache Flume抓取数据(1)

使用Apache Flume抓取数据,怎么来抓取呢?不过,在了解这个问题之前,我们必须明确ApacheFlume是什么? 一.什么是Apache Flume Apache Flume是用于数据采集的高性能系统 ,名字来源于原始的近乎实时的日志数据采集工具,现在广泛用于任何流事件数据的采集,支持从很多数据源聚合数据到HDFS. 最初由Cloudera开发 ,在2011年贡献给了Apache基金会 ,在2012年变成了Apache的顶级项目,Flume OG升级换代成了Flume NG. Flume

如何减少每次同步数据量

说到同步数据,大最为较关心的就是如何尽可能地减少每次的同步数据量,以此来提高同步效率,降低对网络带宽的消耗.针对大批量的数据同步,这一点是必须注意的.解决这个问题的关键点在于获取差异数据,这也就是说,我们仅仅同步变化了的数据,至于没有变化的,就不再同步.下文中,我们将介绍减少每次同步数据量的6个方法: 1.日期栏位(时间戳) 一般情况下,在设计表的时候,添加两个日期栏位,CreatedOn, ChangedOn, 分别记录数据产生时间和变更时间.同步程序可以根据两个栏位来获取差异的数据. 2.T

python爬取数据被限制?一招教你伪造反爬技术!

1.Headers限制 这应该是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作. 这个一般很好解决,把浏览器中的Headers信息复制上去就OK了. 值得注意的是,很多网站只需要userAgent信息就可以通过,但是有的网站还需要验证一些其他的信息,比如知乎,有一些页面还需要 authorization 的信息.所以需要加哪些Headers,还需要尝试,可能还需要Referer.Accept-encoding等信息. 2.IP限制 限制IP也是很多网站反爬虫的初衷,有些人

借助Chrome和插件爬取数据

工具 Chrome浏览器 TamperMonkey ReRes Chrome浏览器 chrome浏览器是目前最受欢迎的浏览器,没有之一,它兼容大部分的w3c标准和ecma标准,对于前端工程师在开发过程中提供了devtools和插件等工具,非常方便使用.在爬取数据的过程中,最常用的应该是开发工具中的Element.Source和Network功能,分别查看DOM结构,源码和网络请求.同时,有很多基于Chrome浏览器的插件又给我们赋予了浏览器级别的能力,来处理数据. TamperMonkey Ta

用Nifi 从web api 取数据到HDFS

1. 全景图 2. 用ExecuteScript生成动态日期参数 为了只生成一个flowfile: Groovy 代码: import org.apache.commons.io.IOUtilsimport java.nio.charset.*import java.text.SimpleDateFormat;import java.lang.StringBuilder;import java.util.Calendar; def flowFile = session.create() flow

代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)

代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到合意的,所以根据网上找的一段代码,进行了较大改动. 需引用 zepto 或 jquery. 我这个是应用于手机上的,两列瀑布流,图片高度未知——等图片的onloaded事件触发后,才对容器进行计算和定位. 大容器是 $("#imgList"),容器格子是$(".pin"

python自然语言处理1——从网络抓取数据

python自然语言处理1--从网络抓取数据 写在前面 本节学习python2.7 BeautifulSoup库从网络抽取数据的技术,检验之简而言之就是爬虫技术.网络编程是一门复杂的技术,在需要基础的地方,文中给出的链接地址,都是很好的教程,可以参考,我在这里不在重复发明轮子.本节的主旨在于: 帮助快速掌握基本爬虫技术,形成一条主线,能为自己的实验构造基础数据.掌握爬虫技术后,可以从网络抓取符合特定需求的数据供分析,这里学习的爬虫技术适用于数据挖掘.自然语言处理等需要从外部挖掘数据的学科. 1.