Naveen Gangam created HIVE-14342:
------------------------------------

             Summary: 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


{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
$ 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