今天在啓動Pig客戶端的時候,命令行出現了下面這個問題。
根據命令行的提示,我們打開bug所記錄的日誌。
vim /etc/profile.d/pig_1582816803489.log
ERROR 2998: Unhandled internal error. jline.Terminal.getTerminal()Ljline/Terminal;
java.lang.NoSuchMethodError: jline.Terminal.getTerminal()Ljline/Terminal;
at jline.ConsoleReader.<init>(ConsoleReader.java:174)
at jline.ConsoleReader.<init>(ConsoleReader.java:169)
at org.apache.pig.Main.run(Main.java:555)
at org.apache.pig.Main.main(Main.java:176)
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)
後來經過不斷的在網上嘗試解決方案,
在$HADOOP_HOME/share/hadoop/yarn/lib中把jline jar刪除(可先保存再刪除,防止誤刪)
於是我們找到對應的目錄下,一眼就找到了我們需要刪除的那個jar
執行刪除命令
rm -rf jline-2.11.jar
刪除完,重新啓動Pig的命令行shell
pig -x local
看到左下角出現grunt
的時候,我就知道啓動成功了。(Grunt是與Pig進行交互的shell環境)