【问题标题】:Parse the Custom Log in HIVE在 HIVE 中解析自定义日志
【发布时间】:2013-08-11 22:52:42
【问题描述】:

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

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

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

【问题讨论】:

    标签: logging hadoop hive


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-17
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      相关资源
      最近更新 更多