如何将textInputformat.record.delimiter重置为其在Hive CLI / Beeline中的



textinputformat.record.delimiter设置为非默认值,对于加载多行文本很有用,如下演示所示。
但是,我未能将此参数设置回其默认值而不退出CLI并重新打开。

以下所有选项都没有工作(也没有其他试验)

set textinputformat.record.delimiter='n';
set textinputformat.record.delimiter='r';
set textinputformat.record.delimiter='rn';
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='';
truncate table mytable;
insert into mytable select concat('Hello',unhex('A'),'world');    
select concat('>>>',mycol,'<<<') as mycol from mytable;

整个文本被插入单个记录

+----------+
|  mycol   |
+----------+
| >>>Hello |
| world    |
| <<<      |
+----------+

试图将定界符更改为newline

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    |
| <<<      |
+----------+

您是否检查了" textinputformat.record.delimiter"变量状态?真的改变了吗?您可以在没有任何值的情况下调用set textinputformat.record.delimiter
如果它已更改,但行不通,您绝对可以在问题跟踪器中创建问题。作为将定界符参数设置为默认值的解决方法,您可以尝试RESET命令。它将将所有属性重置为默认值,尽管此解决方案对于您的情况可能是不可接受的。

使用unicode alt a或 u0001作为特定器。

最新更新