当前位置: 首页 > news >正文

网站横向菜单oa系统开发教程

网站横向菜单,oa系统开发教程,外汇跟单社区网站开发,网站虚拟空间购买修改前任bug#xff0c;Hbase查询过于慢了#xff0c;以至于都查不出来了#xff0c;看了代码发现使用的Scan只设置了withStartRow、withEndRow、setCaching扫描,拿到全部数据后存入集合再subList进行分页#xff0c;但是HBase中存在某些数据有几百万条#xff0c;根本sca…修改前任bugHbase查询过于慢了以至于都查不出来了看了代码发现使用的Scan只设置了withStartRow、withEndRow、setCaching扫描,拿到全部数据后存入集合再subList进行分页但是HBase中存在某些数据有几百万条根本scan不出来了。 前任设置如下 其中start 和 end 拼接0和z是因为HBase中RowKey按照字典顺序排序 String start rowKey 0; String end rowKey z; Scan scan new Scan(); scan.withStartRow(start.getBytes()); scan.withStopRow(end.getBytes()); scan.setCaching(1000); scan.setCacheBlocks(false);先根据业务逻辑找他的问题首先没限定时间戳然后这样分页数据量大就出现问题了。 1.加上时间戳限定范围 时间根据自己的时间来定我这里是查询前一天的数据所以就是零点到末尾 try {scan.setTimeRange(getStartOfDay(2021-11-23), getEndOfDay(2021-11-23)); } catch (IOException e) {e.printStackTrace(); }日期代码网上找的一搜一堆 // 获取指定日期 的 零点时间戳public static Long getStartOfDay(String date) {if (StringUtils.isEmpty(date)) {date date2String(new Date(), yyyy-MM-dd);}DateTimeFormatter ofPattern DateTimeFormatter.ofPattern(yyyy-MM-dd, Locale.CHINA);LocalDate parse LocalDate.parse(date, ofPattern);return parse.atStartOfDay().toInstant(ZoneOffset.of(8)).toEpochMilli();}// 获取指定日期 的 末尾时间戳public static Long getEndOfDay(String date) {if (StringUtils.isEmpty(date)) {date date2String(new Date(), yyyy-MM-dd);}DateTimeFormatter ofPattern DateTimeFormatter.ofPattern(yyyy-MM-dd, Locale.CHINA);LocalDate parse LocalDate.parse(date, ofPattern);return LocalDateTime.of(parse, LocalTime.MAX).toInstant(ZoneOffset.of(8)).toEpochMilli();}public static String date2String(Date date, String format) {SimpleDateFormat yyyy_MM_dd new SimpleDateFormat(format);return yyyy_MM_dd.format(date);}//获取前多少小时到现在的时间范围//可以将 cal1.add(11, -(hour 2))进行修改我这里是当前时间往前走俩小时hour是前多少小时public static long[] getHourTimeLimit(int hour) {Calendar cal1 Calendar.getInstance();Date date new Date();cal1.setTime(date);cal1.add(11, -(hour 2));Date d cal1.getTime();return new long[]{d.getTime(), date.getTime()};}2.修改分页查询 1.网上找到的实现方式 Hbase有一个PageFilter(x)设置一个数往后查询多少个 但是有个问题就是需要设置具体的withStartRow从withStartRow开始往后查询x个,需要先找到startrow每次根据startrow往后查x感觉有点冗余就没用自己想了个思路。 链接贴上想了解可以看看 https://blog.csdn.net/HANLIPENGHANLIPENG/article/details/53203646 2.自己实现的思路 scan的设置 public Scan getScan(String rowKey){Scan scan new Scan();String start rowKey 0;scan.withStartRow(start.getBytes());scan.setCaching(6000);scan.setCacheBlocks(false);scan.setMaxResultSize(2 * 1024 * 1024 * 100);try {scan.setTimeRange(getStartOfDay(2021-11-23), getEndOfDay(2021-11-23));} catch (IOException e) {e.printStackTrace();}scan.setFilter(new PrefixFilter(rowKey));return scan; }大概意思就是使用scanner.next(pageSize)根据页数来轮询轮询到当前页就将数据进行解析结束循环返回。数据量大估计也需要挺长时间测试了一下每页20条1000页以内都还挺快的 前提是将scan.setCaching(6000);这个参数调到适合自己的集群这将决定你多页查询的速度或者将他设置为一个范围根据当前页大小来做判断设置不同的大小页数小就设置小点页数大就相对大一些尽量一次缓存能查找到这样速度就会更快。 scan.setCaching(pageSize * currentPage 6000 ? 6000 : pageSize * currentPage);Scan scan getScan(rowKey); //设置上要查询的列 for (int i 0; i theHour; i) {long hour this.timeUtil.getHour(i);scan.addColumn(Bytes.toBytes(D), String.format(%02d, new Object[]{Long.valueOf(hour)}).getBytes()); }Listxxxx alls new ArrayList(); long count 0L; String startRow; try (Table table this.hbaseConnection.getTable(TableName.valueOf(table));ResultScanner scanner table.getScanner(scan)) {Result[] results;int pageCount 0;while ((results scanner.next(pageSize)).length ! 0) {pageCount;if (pageCount currentPage) {continue;}for (Result rs : results) {//在此处解析获取数据alls.add(xxxx)}break;} } catch (Exception e) {log.error(, e); }我查询第600页每页10个算上解析用时2278ms速度还可以吧只能说相比前任已经是可以查出来了后面在做优化吧第一种方法没尝试感觉上来讲第一种也是一个一个扫描的不知道速度如何有时间的时候在做下测试吧。 [root11 scanHbaseTest]# java -jar scanHbaseTest-1.0-SNAPSHOT.jar xxxxxx 600 10 today get Results time 2278msHbase分页查询还真不太好弄除非能缓存一下每页的第一条数据这样速度会快很多吧但是不太现实。 目前也没想到特别好的办法如果有可以分享给我。 HBase查询优化续集HBase并发查询
http://www.yutouwan.com/news/302392/

相关文章:

  • 东莞网站建设价格价格做公司网站的资料
  • 免费传奇网站模板网站建设企业网的项目描述
  • 柳市哪里有做网站推广优化设计答案六年级上册语文
  • 外贸网站搭建推广自建网站教程视频
  • 自适应网站主要用什么做云优化seo
  • 南宁网站推广工具网站的建设多少钱
  • 天猫网站建设基本情况专业网站建设 公司
  • 51zwd一起做网站app推广软文范文
  • 网站某个链接失效广告联盟官网
  • 学生免费服务器网站搜索引擎优化方案
  • 搭建一个网站花多少钱网站设计的流程
  • 网站建设 开办费抖音关键词查询工具
  • 重庆做个网站多少钱网站虚拟主机公司
  • 厦门城乡住房建设厅网站首页高端访问
  • wordpress 自定义文章搜索自定义关键词优化
  • 国外的网站模板花生壳做wordpress
  • 四川交投建设工程股份有限公司网站wordpress 文章 表格
  • 毕业设计网站模板搜索引擎提交入口
  • 国家工信部网站备案查询系统网页制作基础教程慕课版
  • 中职网站建设wordpress模板堂
  • 伪装学渣无极网站做网站选择什么服务器
  • 莱芜网站优化加徽信xiala5网站推广营销的意义
  • wordpress建站哪里好百度手机助手下载安装
  • 从化五屏网站建设辽宁建设工程信息网二级建造师查询
  • 乐山高端网站建设wordpress站群代
  • c语言 网站开发网站开发周记
  • 校园网站建设的维护网页ui设计师培训
  • 安阳门户网站西部数码网站管理助手 数据库
  • 厦门网站建设模板专业做图片制作网站有哪些
  • 南昌哪家做网站好wordpress 一键安装包