Hadoop技巧(04):简易处理solr date 时区问题
阅读目录
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
文章是哥(mephisto)写的,SourceLink
序
在cdh集成的solr cloud中,我们可以通过solr管理界面进行查询,也可以通过java的api进行查询,但查询过程中,如果是时间类型的,可能会存在两者在界面上看上去不一致的问题,两者时间刚好相差本地的时区。
创建collection
一:上传配置文件
为了模拟现象,我们设置如下solr文档结构
solrctl instancedir --create date_demo /data/solr_s二:创建collection
solrctl collection --create date_demo -s -m -r创建完后solr的collection如下
模拟程序
一:编写程序
编写模拟插入程序。为了容易查看,只插入2条数据。
这里我们使用的solr版本为4.10.3。
private void insert() throws SolrServerException, IOException,
ParseException {
String zhHost = "master1/solr"; CloudSolrServer cloudSolrServer = new CloudSolrServer(zhHost); cloudSolrServer.setDefaultCollection("date_demo"); String id_1 = UUID.randomUUID().toString().replaceAll("-", "")
.toUpperCase();
String name_1 = "1点前+8";
Date createDate_1 = sdfDate.parse("2016-12-30 00:11:12");
String day_1 = sdfDay.format(createDate_1); String id_2 = UUID.randomUUID().toString().replaceAll("-", "")
.toUpperCase();
String name_2 = "1点后+8";
Date createDate_2 = sdfDate.parse("2016-12-30 10:13:14");
String day_2 = sdfDay.format(createDate_2); SolrInputDocument solrInputDocument1 = create(id_1, name_1, day_1,
createDate_1);
SolrInputDocument solrInputDocument2 = create(id_2, name_2, day_2,
createDate_2); cloudSolrServer.add(solrInputDocument1);
cloudSolrServer.add(solrInputDocument2);
cloudSolrServer.commit(); System.out.println("success");
}二:运行程序
可以看到我们已经插入2条数据。
三:程序查询
在程序查询的结果如下。
可以看到solr自己的查询界面使用的时间格式是UTC的,会有时差,我们这里是8小时。
CREATEDAY和CREATEDATE有时候不一致。四:处理
所以为了3方的统一,要么自己改solr界面查询的。要么自己改下时差,使得3方结果一致,方便使用。
这里我们采用自己修改时差来同步。
但工具量挺大,得在solr插入的时候转换下时间格式程utc。还的在每次查询的时候转换回来。
所以这里就自己恶心下自己,改下solr源码,在源码中找到对应的位置,固定的修改成自己这里的时差。
这样就间接的使3方同步了。找到solr相关的处理代码类
org.apache.solr.common.util.JavaBinCodec.java在readVal下
return new Date(dis.readLong()-28800000l);//因为存储的时候solr的时间格式是utc的,所以这里减掉当前时区的值在writePrimitive下
daos.writeLong(((Date) val).getTime()+28800000l);//存入的时候为了同day string同步 加8小时这样就可以了。
我们查看效果。
为了对比 将数据的名称加备注+8
solr查询页面
--------------------------------------------------------------------
到此,本章节的内容讲述完毕。
示例下载
Github:https://github.com/sinodzh/HadoopExample/tree/master/2017/solr.demo/
系列索引
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。
文章是哥(mephisto)写的,SourceLink
Hadoop技巧(04):简易处理solr date 时区问题的更多相关文章
- Hadoop技巧(02):时间同步
阅读目录 序 时间同步 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 在实际部署 ...
- Hadoop技巧系列索引
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink Hadoop技巧(01):插件,终端权限 Had ...
- Hadoop技巧(03):HostName命名带来的问题
阅读目录 序 HostName 问题 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink ...
- Hadoop技巧(01):插件,终端权限
阅读目录 序 HDFS权限 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 在ha ...
- Solr Date类型的哪些你不得不了解的细节
我们先来看看Solr日期类型的一些内幕,然后讨论一下Solr日期类型存在的一些问题,最后我们看看怎么解决现存的问题.概述 DateField 在Solr4.x之前,我们只有DateField,这类型现 ...
- Java中Date时区的转换
1.Date中保存的是什么? 在java中,只要我们执行 Date date = new Date(); 就可以得到当前时间.如: Date date = new Date(); System.ou ...
- solr 设置时区
问题 solr5.2: 发现打印log时间和真实时间对不上,服务器时间设置没有问题,后来发现,solr需要设置时区 解决方法: 直接修改bin/solr.in.sh 文件 #SOLR_TIMEZONE ...
- linux date时区修改
# vi /etc/sysconfig/clock ZONE=Asia/Shanghai(查/usr/share/zoneinfo下面的文件) [root@localhost ~]# dateFr ...
- 04 Apache Solr: 目录结构
通过前面的介绍,我们已经能够看到管理员界面并对Solr形成了一个感性的认识.本篇将在物理上深入了解Solr的安装目录结构和Solr示例的主目录结构. 安装目录结构 Solr 6.3.0安 ...
随机推荐
- 20、手把手教你Extjs5(二十)模块Grid的多列表方案
对于有很多字段的模块在一个grid中显示所有的字段,会显得很臃肿,对于不同的用户其侧重的字段类型也不尽相同,因此就有必要为Grid的列表设计多个方案.在这个自定义系统进行设计的时候,我已经将这部分内容 ...
- LPC1788的ADC和DAC使用
#ifndef __ADC1_H_ #define __ADC1_H_ #include "common.h" #include "delay.h" void ...
- 学习wcf
链接请看下面 第一部分:http://boytnt.blog.51cto.com/966121/796884 第二部分:http://boytnt.blog.51cto.com/966121/7969 ...
- STM32驱动MPU6050
轴 MEMS轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor),可用 I2C 接口连接一个第三方的数字传感器,比如磁力计.扩展之后就可以 ...
- USACO 2015 December Contest, Platinum Problem Max Flow【树链剖分】
题意比较难理解,就是给你n个点的树,然后给你m个修改操作,每一次修改包括一个点对(x, y),意味着将x到y所有的点权值加一,最后问你整个树上的点权最大是多少. 比较裸的树链剖分了,感谢Haild的讲 ...
- ZOJ 1025 Wooden Sticks
题目大意:有n个木棍,分别具有长度li和重量wi.对于木棍s1和s2,若l1<=l2且w1<=w2,则s1.s2可构成单调递增序列.求n个木棍中这样序列的个数. 最先的想法是,先排序,然后 ...
- scala和maven整合实践
.scala和maven如何整合 网上有一堆教程讲idea如何new module或new project一步一步来创建scala工程,在这里我不推荐这个.原因是现在主流的开发环境,大多数是采 ...
- DataTimePicker
日期时间控件 DataTimePicker 功能:拾取系统时间.日期,并以对应格式输出 重要属性: a. date,拾取的时间. b. Time,拾取的系统时间 举例如:button2.Captio ...
- oracle语句总结(一)
1,建外键 新建两个表来实现外键的关联. create table main_tab ( id number, name varchar2(30) ); create table sub_tab ( ...
- JavaSwing JScrollPane的使用
JavaSwing JScrollPane的使用: 参考:http://duyz.blog.ifeng.com/article/340649.html package com.srie.test; i ...





