【发布时间】:2026-01-20 06:05:02
【问题描述】:
将textinputformat.record.delimiter 设置为非默认值,对于加载多行文本很有用,如下面的演示所示。
但是,在不退出 cli 并重新打开它的情况下,我无法将此参数设置回其默认值。
以下选项均无效(也没有其他一些试验)
set textinputformat.record.delimiter='\n';
set textinputformat.record.delimiter='\r';
set textinputformat.record.delimiter='\r\n';
set textinputformat.record.delimiter='
';
reset;
有什么想法吗?
谢谢
演示
create table mytable (mycol string);
insert into mytable select concat('Hello',unhex('A'),'world');
select concat('>>>',mycol,'<<<') as mycol from mytable;
NewLine被解释为记录分隔符,导致插入2条记录
+-------------+
| mycol |
+-------------+
| >>>Hello<<< |
| >>>world<<< |
+-------------+
set textinputformat.record.delimiter='\0';
truncate table mytable;
insert into mytable select concat('Hello',unhex('A'),'world');
select concat('>>>',mycol,'<<<') as mycol from mytable;
整个文本作为单个记录插入
+----------+
| mycol |
+----------+
| >>>Hello |
| world |
| <<< |
+----------+
尝试将分隔符改回换行符
set textinputformat.record.delimiter='\n';
truncate table mytable;
insert into mytable select concat('Hello',unhex('A'),'world');
select concat('>>>',mycol,'<<<') as mycol from mytable;
仍然得到相同的结果
+----------+
| mycol |
+----------+
| >>>Hello |
| world |
| <<< |
+----------+
【问题讨论】:
标签: hadoop mapreduce hive hiveql