hadoop - Hive 表的基于时间的查询

标签 hadoop hive apache-pig

我的表结构是这样的:

hive> describe user_data2;
OK
received_at             string                                      
message_id              string                                      
type                    string                                      
version                 string                                      
timestamp_user          string                                      
user_id                 string                                      
sent_at                 string                                      
channel                 string                                      
time_log                string 

我的目标是这个领域,

hive> select received_at, time_log, user_id from user_data2 limit 5;
OK
2016-01-08T12:27:05.565Z    1452256025  836871
2016-01-08T12:27:12.634Z    1452256033  800798
2016-01-08T12:27:12.632Z    1452256033  795799
2016-01-08T12:27:13.694Z    1452256033  820359
2016-01-08T12:27:15.821Z    1452256036  294141

在此我想进行基于时间的查询。喜欢

  1. 平均活跃小时数;每月;期间:过去 12 个月
  2. % 的用户在 0-1 小时/天之间活跃
  3. % 的用户在 1-2 小时/天之间活跃
  4. % 的用户在 2-4 小时/天之间活跃
  5. % 的用户在 4-8 小时/天之间活跃
  6. % 的用户在 8-12 小时/天之间活跃
  7. % 的用户在 12-16 小时/天之间活跃
  8. % 的用户在 16-24 小时/天之间活跃

我得到了一些使用日期时间 UDF 的线索 - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

但我不知道如何使用这个功能。

我试过:

select unix_timestamp(received_at) from user_data2 limit 5;
OK
NULL
NULL
NULL
NULL
NULL

什么都不给。

如果有人给出使用时间 UDF 并在两小时或其他时间范围内获取记录的示例,我将不胜感激。

最佳答案

假设您本地的 TZ 是罗马...

select
  from_utc_timestamp(regexp_replace(regexp_replace(RECEIVED_AT, 'T',' '), '\\..*$',''), 'Europe/Rome') as TS_RECEIVED,
  cast(from_unixtime(cast(TIME_LOG as int)) as timestamp) as TS_LOGGED
from WTF ;

+------------------------+------------------------+--+
|      ts_received       |      ts_logged         |
+------------------------+------------------------+--+
| 2016-01-08 13:27:05.0  | 2016-01-08 13:27:05.0  |
+------------------------+------------------------+--+

关于hadoop - Hive 表的基于时间的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34786529/

相关文章:

python - 从 python UDF 返回未知长度的元组,然后在 Pig 中应用哈希

hadoop - Pig 字段中的拆分字符

hadoop - Pig - 如何操作和比较日期?

algorithm - 在语料库中进行高效搜索

Hadoop MapReduce : Possible to define two mappers and reducers in one hadoop job class?

hadoop - 如何在 Hive 中存储特殊字符?

hadoop - 将Parive格式的Hive表数据索引到Cloudera Search/Solr

hadoop - Hadoop Hbasee Zookeeper错误

java.sql.SQLException : No suitable driver found for jdbc:hive://localhost:10000/default 异常

hadoop - 如何限制 Pig 脚本启动的并发作业数量?