Python 将日志文件放入配置单元

Python 将日志文件放入配置单元,python,hadoop,hive,Python,Hadoop,Hive,我有一个非结构化文件,其中包含以下数据: file.log: 2014-03-13 US Texas 334 4.985 2014-03-13 US Minnesota 534 6.544 日志文件不是以制表符分隔的,因为有些字段是以制表符分隔的,有些字段不是 我怎样才能把它放进蜂箱里 配置单元表架构为: 创建表文件dateFact字符串、country字符串、state字符串、id int、value字符串 如何使用Python和/或Hadoop命令将日志文件加载到

我有一个非结构化文件,其中包含以下数据:

file.log:

2014-03-13 US Texas   334    4.985
2014-03-13 US    Minnesota   534    6.544
日志文件不是以制表符分隔的,因为有些字段是以制表符分隔的,有些字段不是

我怎样才能把它放进蜂箱里

配置单元表架构为:

创建表文件dateFact字符串、country字符串、state字符串、id int、value字符串

如何使用Python和/或Hadoop命令将日志文件加载到配置单元表中


谢谢

这个问题可能是重复的

请检查这个和这个

根据以上两个链接,您不能有多个分隔符,不支持

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


您需要为您的业务需求找出一个正则表达式模式,并将其保存在serde属性中

这个问题可能是重复的

请检查这个和这个

根据以上两个链接,您不能有多个分隔符,不支持

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


您需要为您的业务需求找出一个正则表达式模式,并将其保存在serde属性中

使用RegexSerDe,您可以使用\s+匹配多个空格类型单空格、多空格和制表符

我面前没有要测试的hive实例,但您应该从下面的代码中了解这一点

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;

使用RegexSerDe,您可以使用\s+匹配多个空格类型单空格、多空格和制表符

我面前没有要测试的hive实例,但您应该从下面的代码中了解这一点

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;

好吧,如果分隔符是2个空格呢?如果日志文件中的每个字段都有2个空格,如何将数据加载到配置单元中?请提供详细信息。好的,如果分隔符是2个空格怎么办?如果日志文件中的每个字段都有2个空格,如何将数据加载到配置单元中?请提供详细信息。嗨,如果file.log只是2014-03-13美国德克萨斯334 4.985,如何将其插入配置单元?嗨,如果file.log只是2014-03-13美国德克萨斯334 4.985,如何将其插入配置单元?