1

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

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

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

1 回答 1

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
于 2013-08-12T01:44:29.237 回答