我是 HIVE 的新手。我有一个由“\t”分隔的日志文件,例如: A\tB\tC\tD\tE\tF ...
我想在此创建一个外部表,我可以使用 [FIELD SEPERATED BY "\t"] 但是
- 我不想要所有的列,我只需要几个,例如 1,3
- 一列有负值,我希望它转换为正值。
假设您的日志文件中有以下数据(由 '\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