It seems that the Beeline prints the query along with the results in the stdout when a script file is passed. The output file in the example below needs to only have the results and not the query.
.vihang-MBP:bin vihang$ ./beeline --showheader=false --outformat=tsv2 -u "jdbc:hive2://localhost:10000" -f /tmp/query.sql > /tmp/query.out 2> /tmp/query.err OK $ cat /tmp/query.out 1: jdbc:hive2://localhost:10000/default> select * from likes limit 4; +-----------+--------------+--+ | 1 | chocolate | | 1 | car | | 1 | games | | 1 | chess | +-----------+--------------+--+ 1: jdbc:hive2://localhost:10000/default> 1: jdbc:hive2://localhost:10000/default> $
A lot of people use HiveCLI and in order to transition from HiveCLI scripts to Beeline, this needs to be taken care of. The output files generated by beeline should contain only the results and nothing else.
Similarly, when not in silent mode, query are being printed out on stdout, which is adding garbage along with results, as just like HIVE CLI does, users would like to have only the results on stdout, not errors/debugging info/etc, like the full query.
Query could be printed out, no problem, as long as it is not on stdout (with results), instead, it must be printed out along with the debugging info.
- is duplicated by
HIVE-14525 beeline still writing log data to stdout as of version 2.1.0