[ https://issues.apache.org/jira/browse/HIVE-14538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15452257#comment-15452257 ]
Yongzhi Chen commented on HIVE-14538: ------------------------------------- [~ctang.ma], there is no indention issue, following is the code: {noformat} private Map<String, String> getHiveVariables() { Map<String, String> result = new HashMap<>(); BufferedRows rows = getConfInternal(true); if (rows != null) { while (rows.hasNext()) { Rows.Row row = (Rows.Row) rows.next(); if (!row.isMeta) { result.put(row.values[0], row.values[1]); } } } return result; } {noformat} For the variables for shell commands: Following is some comment in the review board of: Xuefu Zhang 1 year, 2 months ago (June 10, 2015, 3:20 a.m.) Yeah. It's a little trickier than thought. Shell command is executed at client side (Beeline) and it doesn't seem making sense to use server specific variables such (env, sys, hiveconf, hivevar) in the shell commands. More importantly, Beeline can connect to multiple serves at the same time, so which configurations should be used to substitue the variables? User should be able to execute shell commands w/o any server connection. For CLI, server and client are together, so these don't matter. But for beeline + HS2 deployment, story will be different. I don't know what's the best, and all I'm saying is that we need to be very careful on what we doing. Before we decide what to do, we need to clearly define the problem we are trying to solve first. > beeline throws exceptions with parsing hive config when using !sh statement > --------------------------------------------------------------------------- > > Key: HIVE-14538 > URL: https://issues.apache.org/jira/browse/HIVE-14538 > Project: Hive > Issue Type: Bug > Affects Versions: 1.1.0 > Reporter: Yongzhi Chen > Assignee: Yongzhi Chen > Attachments: HIVE-14538.1.patch, HIVE-14538.2.patch > > > When beeline has a connection to a server, in some env it has following > problem: > {noformat} > 0: jdbc:hive2://localhost> !verbose > verbose: on > 0: jdbc:hive2://localhost> !sh id > java.lang.ArrayIndexOutOfBoundsException: 1 > at org.apache.hive.beeline.Commands.addConf(Commands.java:758) > at org.apache.hive.beeline.Commands.getHiveConf(Commands.java:704) > at org.apache.hive.beeline.Commands.sh(Commands.java:1002) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.apache.hive.beeline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:52) > at org.apache.hive.beeline.BeeLine.dispatch(BeeLine.java:1081) > at org.apache.hive.beeline.BeeLine.execute(BeeLine.java:917) > at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:845) > at org.apache.hive.beeline.BeeLine.mainWithInputRedirection(BeeLine.java:482) > at org.apache.hive.beeline.BeeLine.main(BeeLine.java:465) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at org.apache.hadoop.util.RunJar.run(RunJar.java:221) > at org.apache.hadoop.util.RunJar.main(RunJar.java:136) > 0: jdbc:hive2://localhost> !sh echo hello > java.lang.ArrayIndexOutOfBoundsException: 1 > at org.apache.hive.beeline.Commands.addConf(Commands.java:758) > at org.apache.hive.beeline.Commands.getHiveConf(Commands.java:704) > at org.apache.hive.beeline.Commands.sh(Commands.java:1002) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.apache.hive.beeline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:52) > at org.apache.hive.beeline.BeeLine.dispatch(BeeLine.java:1081) > at org.apache.hive.beeline.BeeLine.execute(BeeLine.java:917) > at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:845) > at org.apache.hive.beeline.BeeLine.mainWithInputRedirection(BeeLine.java:482) > at org.apache.hive.beeline.BeeLine.main(BeeLine.java:465) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at org.apache.hadoop.util.RunJar.run(RunJar.java:221) > at org.apache.hadoop.util.RunJar.main(RunJar.java:136) > 0: jdbc:hive2://localhost> > {noformat} > Also it breaks if there is no connection established: > {noformat} > beeline> !sh id > java.lang.NullPointerException > at org.apache.hive.beeline.BeeLine.createStatement(BeeLine.java:1897) > at org.apache.hive.beeline.Commands.getConfInternal(Commands.java:724) > at org.apache.hive.beeline.Commands.getHiveConf(Commands.java:702) > at org.apache.hive.beeline.Commands.sh(Commands.java:1002) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.apache.hive.beeline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:52) > at org.apache.hive.beeline.BeeLine.dispatch(BeeLine.java:1081) > at org.apache.hive.beeline.BeeLine.execute(BeeLine.java:917) > at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:845) > at org.apache.hive.beeline.BeeLine.mainWithInputRedirection(BeeLine.java:482) > at org.apache.hive.beeline.BeeLine.main(BeeLine.java:465) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at org.apache.hadoop.util.RunJar.run(RunJar.java:221) > at org.apache.hadoop.util.RunJar.main(RunJar.java:136) > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)