

Druid Json查询interval时间问题
source link: https://www.zhyea.com/2022/04/03/druid-json-query-interval-problem.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Druid Json查询interval时间问题
前天在使用Druid完成一个新项目时遇到了查询时间错误的问题。就是日志一直在往Druid里灌,但是查近一个小时的数据怎么也查不到。经检查,日志消费情况,时间戳的填充也都是没有问题的。后来尝试将查询起始时间往前推了1天,总算查到了数据(查询时间巨长)。而且根据查询结果中的一些时间字段来看,还是有最近一个小时的记录的。这说明我的查询json是OK的,问题出在时间上。
尝试调整了几次interval时间后,确定了要把查询起止时间往前推8个小时才能查到预期的结果。8 这个数字引起了我的注意——我们通常采用的北京时间就是东八区时区时间。是不是向Druid写入日志时,把时间戳给处理成0时区时间了。赶紧和Druid管理员沟通,确定了如我猜测:如果写入的时间是时间戳格式就会被处理成0时区UTC时间。
再说下解决方案。大体有仨:
- 调整Druid时区配置
- 我将日志中的时间戳(13位长整型毫秒值)改为UTC时间(如:2019-03-01T12:12:12.333Z,虽然Z标识0时区,但写入时还按当前时区设置值就好)。
- 接受现状,查询时把时间往前推8小时
接受现状是不可能的,因为不符合个人美学。
其中第一个方案,我记得Druid官方文档是有说明的,这个应该可以改。(查了下官网,具体在JVM配置这一节)。但是不能指望运维改,毕竟在线服务都跑了好久了,贸然改了默认时区线上服务是要受影响的。
因此只剩第二个选项了。和运维沟通后,确认了虽然我之前写的是时间戳,但现在直接改成UTC时间也是OK的,只是会损失一些数据。最终定下了就采用这种方式。
其实还有其它解决方案:
第一种:使用Druid SQL来查询,查询时间仍然采用长整型时间戳,下面是一个范例:
另外使用Druid SQL查询时也可以在context
中通过sqlTimeZone
设置查询时区(知道有,但没试过)。
但是我不喜欢使用Druid SQL(有一点点性能的考虑)。PASS!
第二种:使用period
Granularities,在查询时指定查询使用的时区。这个在官网有一个例子:Period Granularities。但是嫌繁琐,仍然PASS!
另外,这次我还开发了一些Druid JSON查询的工具类,如果有需要可以从GitHub拉取:zhyea / druid-explore 。代码中仅包括我现在用到的功能,后续用到了其他功能(如Filter)也会继续补充。
扯点儿闲白:这篇文我从早上就开始酝酿,但是先后出现了博客服务器问题,游戏晋级,零食,水果等种种阻碍,终于才能开始着手写,然后在半个多小时的时间内一气完成——但是完成时天色已全黑。再次感叹之前多次的感叹:小事开头难,大事坚持难。
END!!
此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据。
Recommend
-
70
README.md
-
28
SetIntervalJS SetIntervalJS is a constructor which hide inside reference to setInterval() for cleaner usage. It helps to make your code cleaner and there is no need to have more variables for clearInterval()...
-
44
README.md Laravel Fake Cron php artisan cron is a daemon command that runs the schedule:run command. Use this pa...
-
41
README.md Introduction cgranges is a small C library for genomic interval overlap queries: given a genomic region r and a set of regions R...
-
37
README.md Line Number Interval for Neovim Highlight line number by each XX lines.
-
53
Illustration with Python: Confidence Interval
-
36
If you apply for a position that involves AB testing, SQL or any type of user experience research, chances are your interview...
-
19
The completed Sharded Interval Queue is up on npm if you’d like to take a look or use it. This is the first of a two-parter on the theory and implementat...
-
8
druid 问题记录发表于2021-08-19更新于2021-08-20字数统计1.3k阅读时长11分阅读次数1日常工作中采用 Druid 做流量日志分析。因为是刚接触,所以在离线/实时数据摄入过程中经常会碰到一些问题,本文主要用来记录这些问题及一些思考。...
-
5
Druid Query in JSON Apr 11, 2019 Druid 可以在 Superset SQL 查询,除此之外可以通过 HTTP+JSON 查询: curl -X POST '<host:<port>/druid/v2/?pretty' -H 'Content-Typ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK