Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-14342

Beeline output is garbled when executed from a remote shell

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0
    • Fix Version/s: 2.1.1, 2.2.0
    • Component/s: Beeline
    • Labels:
      None

      Description

      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");
      

      then run a select query

       
      # cat /tmp/select.sql 
      set hive.execution.engine=mr;
      select key,name,value 
      from clitest 
      where value="1" limit 1;
      

      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                                                   
      $
      

      In older releases that the output is as follows

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

      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.

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

      So I think the use of jline.UnsupportedTerminal should be documented but not used automatically by beeline under the covers.

        Attachments

        1. HIVE-14342.patch
          0.4 kB
          Naveen Gangam
        2. HIVE-14342.patch
          0.4 kB
          Naveen Gangam
        3. HIVE-14342.2.patch
          0.9 kB
          Naveen Gangam

          Issue Links

            Activity

              People

              • Assignee:
                ngangam Naveen Gangam
                Reporter:
                ngangam Naveen Gangam
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: