【发布时间】:2013-08-11 22:52:42
【问题描述】:
我是 HIVE 的新手。 我有一个由“\t”分隔的日志文件, 例子: A\tB\tC\tD\tE\tF ...
我想在上面创建一个外部表,我可以使用 [FIELD SEPERATED BY "\t"] 但是
- 我不想要所有的列,我只需要几个,例如 1,3
- 一列有负值,我希望它转换为正值。
【问题讨论】:
我是 HIVE 的新手。 我有一个由“\t”分隔的日志文件, 例子: A\tB\tC\tD\tE\tF ...
我想在上面创建一个外部表,我可以使用 [FIELD SEPERATED BY "\t"] 但是
【问题讨论】:
假设您的日志文件中有以下数据(以“\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
【讨论】: