当前位置: 代码迷 >> python >> 将日志文件放入Hive
  详细解决方案

将日志文件放入Hive

热度:27   发布时间:2023-07-16 09:55:53.0

我有一个非结构化文件,其数据如下:

file.log:

2014-03-13 US Texas   334    4.985
2014-03-13 US    Minnesota   534    6.544

日志文件不是用制表符分隔的,因为有些字段是用制表符分隔的,而有些则不是。

如何将其放入Hive表中?

配置单元表架构为:

创建表文件(dateFact字符串,国家/地区字符串,状态字符串,id int,值字符串);

如何使用Python和Hadoop命令将日志文件加载到Hive表中?

谢谢!

这个问题可能是重复的。

请检查此以及此 。

根据上述2个链接,您不能有多个定界符,不支持。

但是有一个解决方法。 可以通过使用RegExSerde来实现。

您需要找出适合您业务需求的正则表达式模式,并将其保留在serde属性中。

使用RegexSerDe,您可以使用\\s+来匹配多个空白类型(单个空格,多个空格,制表符)。

我没有在我前面的蜂巢实例进行测试,但是您应该从下面的代码中得到启发。

CREATE TABLE file.log (
  dateFact STRING,
  country STRING,
  state STRING,
  id STRING,
  value STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES  (
"input.regex" = "([0-9]{4}-[0-9]{2}-[0-9]{2})\s+(\w+)\s+(\w+)\s+(\d+)\s+([\d.]+)",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s"
)
STORED AS TEXTFILE;