解析HIVE中的自定义日志

时间:2013-08-11 22:52:42

标签: logging hadoop hive

我是HIVE的新手。 我有一个由“\ t”分隔的日志文件, 例: A \ tB \ tC \ tD \ tE \ tF ...

我想在此创建一个外部表,我可以使用[FIELD SEPERATED BY“\ t”]但是

  • 我不想要所有列,我只需要很少,例如1,3
  • 一列有负值,我希望它转换为正值。

1 个答案:

答案 0 :(得分:1)

假设您的日志文件中包含以下数据(以'\ t'分隔):

a   123 b   c   d
x   -12 y   z
o   1   q

对于第一个要求,默认Hive加载程序将读取您指定的列。例如,

CREATE EXTERNAL TABLE IF NOT EXISTS test (
c1 STRING, c2 INT, c3 STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/user/joe/test';

我们使用上述语句创建表test。如果某行是a\t123\tb\tc\td,则Hive将仅使用前3列。因此,您可以使用此功能来剪切行末的无用列。如果您只需要使用“c2”和“c3”,则可以从test表中选择这两列并忽略“c1”。

对于第二个要求,您可以使用ABS。例如,

select c1, ABS(c2), c3 from test;

以上陈述将输出以下数据:

a   123 b
x   12  y
o   1   q