You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "karim (Jira)" <ji...@apache.org> on 2020/02/09 13:42:00 UTC

[jira] [Updated] (HIVE-22857) beeline background broke the terminal

     [ https://issues.apache.org/jira/browse/HIVE-22857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

karim updated HIVE-22857:
-------------------------
    Description: 
Hello,

I am currently working on a tool which allows to:
- Take a csv file which contains a table list
- Make a loop which will run through the list of tables and send it to beeline to retrieve the ddl of the tables which will be sent to a file

in my example there are 8 tables and I would like to send 5 beeline requests in the background. As soon as one of the tasks ends, the 6th request is sent to beeline etc etc. As soon as a new request ends, it sends a new request in the background.

There must always be 5 requests at the same time.
When I send the requests, I program well but the terminal bug at the end of the program. I write for example ls, nothing is displayed, i press enter, the command executes and print output.

Do you have an idea?

The code 


#!/bin/bash

func_try(){
        beelineUsername="xxx"
        beelinePassword="xxx"
        jdcb_url='xxx'
       extra_param='hive.support.concurrency=true;hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;hive.compactor.initiator.on=true;hive.compactor.worker.threads=1;'
        request="SHOW CREATE TABLE base.${$1}"
        ref_pid=$BASHPID
        change=$2


        ddl=$( beeline -n "$beelineUsername" -p "$beelinePassword" --fastConnect=true -u "$jdcb_url$extra_param" --silent=true --outputformat="csv2" -f "./resultats/$change.hql" 2>&1)
        ddlTable=$(echo "$ddl" > "./pid/${change}_${ref_pid}_ref.txt")
        rm "${folder}/${changer}.hql"
}


ARG_PAR=5
folder="./resultats"

rm -f ."/resultats/*.hql"

count=1

while read -r Table;
do
        # Get Table to send in beeline
        if [ ! -z "$Table" ]
        then
                nb_file=$(ls ${folder} | wc -l)
                # This loop is bloking when $ARG_PAR=5 and wait one of beeline request end 
                # for lauch the next request
                while [ $nb_file -eq ${ARG_PAR} ]
                do
                        nb_file=$(ls ${folder} | wc -l)
                        sleep 5
                done

                # Create token. This token contain the request to send in beeline
                echo "SHOW CREATE TABLE braff00.$Table" > "${folder}/${count}.hql"
                func_try "${Table}" "${count}" &
        fi
        let "count+=1"
done < "./table.txt"




  was:
Hello,

I am currently working on a tool which allows to:
- Take a csv file which contains a table list
- Make a loop which will run through the list of tables and send it to beeline to retrieve the ddl of the tables which will be sent to a file

in my example there are 8 tables and I would like to send 5 beeline requests in the background. As soon as one of the tasks ends, the 6th request is sent to beeline etc etc. As soon as a new request ends, it sends a new request in the background.

There must always be 5 requests at the same time.
When I send the requests, I program well but the terminal bug at the end of the program. I write for example ls, nothing is displayed, i press enter, the command executes and print output.

Do you have an idea?


> beeline background broke the terminal 
> --------------------------------------
>
>                 Key: HIVE-22857
>                 URL: https://issues.apache.org/jira/browse/HIVE-22857
>             Project: Hive
>          Issue Type: Bug
>          Components: Beeline, HiveServer2
>    Affects Versions: 1.2.1
>            Reporter: karim
>            Priority: Blocker
>
> Hello,
> I am currently working on a tool which allows to:
> - Take a csv file which contains a table list
> - Make a loop which will run through the list of tables and send it to beeline to retrieve the ddl of the tables which will be sent to a file
> in my example there are 8 tables and I would like to send 5 beeline requests in the background. As soon as one of the tasks ends, the 6th request is sent to beeline etc etc. As soon as a new request ends, it sends a new request in the background.
> There must always be 5 requests at the same time.
> When I send the requests, I program well but the terminal bug at the end of the program. I write for example ls, nothing is displayed, i press enter, the command executes and print output.
> Do you have an idea?
> The code 
> #!/bin/bash
> func_try(){
>         beelineUsername="xxx"
>         beelinePassword="xxx"
>         jdcb_url='xxx'
>        extra_param='hive.support.concurrency=true;hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;hive.compactor.initiator.on=true;hive.compactor.worker.threads=1;'
>         request="SHOW CREATE TABLE base.${$1}"
>         ref_pid=$BASHPID
>         change=$2
>         ddl=$( beeline -n "$beelineUsername" -p "$beelinePassword" --fastConnect=true -u "$jdcb_url$extra_param" --silent=true --outputformat="csv2" -f "./resultats/$change.hql" 2>&1)
>         ddlTable=$(echo "$ddl" > "./pid/${change}_${ref_pid}_ref.txt")
>         rm "${folder}/${changer}.hql"
> }
> ARG_PAR=5
> folder="./resultats"
> rm -f ."/resultats/*.hql"
> count=1
> while read -r Table;
> do
>         # Get Table to send in beeline
>         if [ ! -z "$Table" ]
>         then
>                 nb_file=$(ls ${folder} | wc -l)
>                 # This loop is bloking when $ARG_PAR=5 and wait one of beeline request end 
>                 # for lauch the next request
>                 while [ $nb_file -eq ${ARG_PAR} ]
>                 do
>                         nb_file=$(ls ${folder} | wc -l)
>                         sleep 5
>                 done
>                 # Create token. This token contain the request to send in beeline
>                 echo "SHOW CREATE TABLE braff00.$Table" > "${folder}/${count}.hql"
>                 func_try "${Table}" "${count}" &
>         fi
>         let "count+=1"
> done < "./table.txt"



--
This message was sent by Atlassian Jira
(v8.3.4#803005)