regex - 文件名的一部分作为 Hive 表中的列

标签 regex azure hadoop hive hiveql

我想将文件名的第一部分作为 Hive 表中的一列

My filename is : 20151102114450.46400_Always_1446482638967.xml

我在 Microsoft Azure 的 Hive 中使用正则表达式编写了一个查询(下面的查询)来获取它的第一部分,即 20151102114450

但是当我运行查询时,我得到的输出为 20151102164358

select CAST(regexp_replace(regexp_replace(regexp_replace(CAST(CAST(regexp_replace(split(INPUT__FILE__NAME,'[_]')[2],'.xml','') AS BIGINT) as TimeStamp),':',''),'-',''),' ','') AS BIGINT) as VERSION

谁能告诉我哪里出了问题以及需要纠正什么?

最佳答案

我在 Cloudera 中尝试过这个,希望它也能在 Azure 中工作。

select from_unixtime(unix_timestamp(regexp_extract('20151102114450.46400_Always_1446482638967.xml','^(.*?)\\.'),'yyyyMMddHHmmss'),'yyyy-MMM-dd HH:mm:ss');

2015-Nov-02 11:44:50
Time taken: 19.644 seconds, Fetched: 1 row(s)

另一种选择:

select from_unixtime(unix_timestamp(split('20151102114450.46400_Always_1446482638967.xml','\\.')[0],'yyyyMMddHHmmss'),'yyyy-MMM-dd HH:mm:ss')

关于regex - 文件名的一部分作为 Hive 表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37331487/

相关文章:

azure - Visual Studio 发布到 Azure 时出现 Microsoft Identity Platform 错误

javascript - jquery 将所有 <ol> 替换为 <ul>

azure - 如何在 Windows Azure(操作系统或网站)中配置完美前向保密

Java - 标记化参数列表

azure - 寻找一种通过服务总线消息对应用程序进行压力测试的工具

java - 如何使用 flume 将 body 中的数据拆分到不同的 channel 中?

hadoop - 有没有办法在单独的文件中设置查询参数(变量)?

eclipse - 映射减少分布式缓存

regex - 使用 Grep 和 Regex 在一行中搜索多个匹配项

c# - 选择特定单词后的子字符串