[ 
https://issues.apache.org/jira/browse/HIVE-14342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15409377#comment-15409377
 ] 

Naveen Gangam commented on HIVE-14342:
--------------------------------------

[~mohitsabharwal] [~aihuaxu] Could you please review the fix? 
The proposed fix adds an additional condition to only use the 
UnsupportedTerminal for beeline running as background process when run locally. 
The condition detects that beeline is being invoked from a remote shell by 
checking if stdin for the script is a pipe.

> Beeline output is garbled when executed from a remote shell
> -----------------------------------------------------------
>
>                 Key: HIVE-14342
>                 URL: https://issues.apache.org/jira/browse/HIVE-14342
>             Project: Hive
>          Issue Type: Bug
>          Components: Beeline
>    Affects Versions: 2.0.0
>            Reporter: Naveen Gangam
>            Assignee: Naveen Gangam
>         Attachments: HIVE-14342.patch, HIVE-14342.patch
>
>
> {code}
> use default;
> create table clitest (key int, name String, value String);
> insert into table clitest values 
> (1,"TRUE","1"),(2,"TRUE","1"),(3,"TRUE","1"),(4,"TRUE","1"),(5,"FALSE","0"),(6,"FALSE","0"),(7,"FALSE","0");
> {code}
> then run a select query
> {code} 
> # cat /tmp/select.sql 
> set hive.execution.engine=mr;
> select key,name,value 
> from clitest 
> where value="1" limit 1;
> {code}
> Then run beeline via a remote shell, for example
> {code}
> $ ssh -l root <remotehost.domain.com> "sudo -u hive beeline -u 
> jdbc:hive2://localhost:10000 -n hive -p hive --silent=true 
> --outputformat=csv2 -f /tmp/select.sql" 
> root@<remoteHost.domain.com>'s password: 
> 16/07/12 14:59:22 WARN mapreduce.TableMapReduceUtil: The hbase-prefix-tree 
> module jar containing PrefixTreeCodec is not present.  Continuing without it.
> nullkey,name,value                                     
> 1,TRUE,1
> null                                                   
> $
> {code}
> In older releases that the output is as follows
> {code}
> $ ssh -l root <remoteHost.domain.com> "sudo -u hive beeline -u 
> jdbc:hive2://localhost:10000 -n hive -p hive --silent=true 
> --outputformat=csv2 -f /tmp/run.sql" 
> Are you sure you want to continue connecting (yes/no)? yes
> root@<remoteHost.domain.com>'s password: 
> 16/07/12 14:57:55 WARN mapreduce.TableMapReduceUtil: The hbase-prefix-tree 
> module jar containing PrefixTreeCodec is not present.  Continuing without it.
> key,name,value
> 1,TRUE,1
> $
> {code}
> The output contains nulls instead of blank lines. This is due to the use of 
> -Djline.terminal=jline.UnsupportedTerminal introduced in HIVE-6758 to be able 
> to run beeline as a background process. But this is the unfortunate side 
> effect of that fix.
> Running beeline in background also produces garbled output.
> {code}
> # beeline -u "jdbc:hive2://localhost:10000" -n hive -p hive --silent=true 
> --outputformat=csv2 --showHeader=false -f /tmp/run.sql 2>&1 > 
> /tmp/beeline.txt &
> # cat /tmp/beeline.txt 
> null1,TRUE,1                                           
> #
> {code}
> So I think the use of jline.UnsupportedTerminal should be documented but not 
> used automatically by beeline under the covers.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to