《Hive編程指南》14.3 投影變換的實踐出錯原因分析

自己在學習14.3節投影變換執行SQL語句hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/cut -f1' AS newA, newB FROM a;時出現了這個錯誤

Ended Job = job_local1231989520_0004 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

跟作者的輸出不一樣。
自己一開始時沒有管這個錯誤,直接跳過這個問題,繼續往下看了。
但在執行接下來的語句SELECT TRANSFORM(col1, col2) USING '/bin/cut -f1' AS newA FROM a;時又出現了這個錯誤

Ended Job = job_local1771018374_0006 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

沒有明確的錯誤信息,自己先是另開了一個終端嘗試了一下:

duxing@duxing-X550JK:~$ /bin/cut
bash: /bin/cut: No such file or directory
duxing@duxing-X550JK:~$ echo "4 5" | /bin/cut -f1
bash: /bin/cut: No such file or directory
duxing@duxing-X550JK:~$ echo "4 5" |cut -f1
4 5
duxing@duxing-X550JK:~$ echo "4 5" |cut -f1
4 5

第一次沒有找的出錯原因。
又在終端嘗試了一下,在執行這行語句的時候SELECT TRANSFORM(col1, col2) USING 'cut -f1' AS newA, newB FROM a;得到了預期的結果,同時我又執行ls /bin | grep "cut"并沒有cut文件。
現在看來是因為Ubuntu中cut程序并沒有放在/bin/目錄下導致語句執行出錯。
在執行which cut后得到驗證,cut放在了/usr/bin/目錄下。
相關命令執行記錄

  1. Hive終端
hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/cut -f1' AS newA, newB FROM a;
Ended Job = job_local1231989520_0004 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/cut -f1' AS newA, newB FROM a;
Ended Job = job_local1383279613_0005 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/cut -f1' AS newA FROM a;
Ended Job = job_local1771018374_0006 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/cut -f1' AS newA FROM a;
Ended Job = job_local81582517_0007 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/sed s/4/10' AS newA, newB AS a;
NoViableAltException(37@[])at org.apache.hadoop.hive.ql.parse.HiveParser.rowFormat(HiveParser.java:34626)at org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectTrfmClause(HiveParser_SelectClauseParser.java:2021)at org.apache.hadoop.hive.ql.parse.HiveParser_SelectClauseParser.selectClause(HiveParser_SelectClauseParser.java:1216)at org.apache.hadoop.hive.ql.parse.HiveParser.selectClause(HiveParser.java:51850)at org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:45661)at org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:45568)at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:44584)at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:44454)at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1696)at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1178)at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:204)at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:444)at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1242)at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1384)at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1171)at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1161)at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232)at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183)at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399)at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776)at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714)at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)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)
FAILED: ParseException line 1:67 cannot recognize input near 'AS' 'a' '<EOF>' in serde specification
hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/sed s/4/10' AS newA, newB FROM a;
/bin/sed: -e expression #1, char 6: unterminated `s' command
org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20003]: An error occurred when trying to close the Operator running your custom script.at org.apache.hadoop.hive.ql.exec.ScriptOperator.close(ScriptOperator.java:585)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.close(ExecMapper.java:189)at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61)at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)
org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20003]: An error occurred when trying to close the Operator running your custom script.at org.apache.hadoop.hive.ql.exec.ScriptOperator.close(ScriptOperator.java:585)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.close(ExecMapper.java:189)at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61)at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)
org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20003]: An error occurred when trying to close the Operator running your custom script.at org.apache.hadoop.hive.ql.exec.ScriptOperator.close(ScriptOperator.java:585)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:697)at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.close(ExecMapper.java:189)at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61)at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748)
Ended Job = job_local1180910273_0008 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
hive (default)> SELECT TRANSFORM(col1, col2) USING 'cut -f1' AS newA, newB FROM a;
newA    newB
4   NULL
3   NULL
hive (default)> SELECT TRANSFORM(col1, col2) USING 'cut -f1' AS newA FROM a;
newA
4
3

終端1:

duxing@duxing-X550JK:~$ /bin/cut
bash: /bin/cut: No such file or directory
duxing@duxing-X550JK:~$ echo "4 5" | /bin/cut -f1
bash: /bin/cut: No such file or directory
duxing@duxing-X550JK:~$ echo "4 5" |cut -f1
4 5
duxing@duxing-X550JK:~$ echo "4 5" |cut -f1
4 5
duxing@duxing-X550JK:~$ echo "4 5" |sed s/4/10
sed: -e expression #1, char 6: unterminated `s' command
duxing@duxing-X550JK:~$ sed s/4/10
sed: -e expression #1, char 6: unterminated `s' command

終端2:

duxing@duxing-X550JK:~$ ls /bin | grep "cut"
duxing@duxing-X550JK:~$ ls /bin
bash          bzmore          dd             fgrep       kbd_mode    ls          nc                ntfsfallocate  ps         sh                    systemd-inhibit                 uname           zfgrep
bunzip2       cat             df             findmnt     kill        lsblk       nc.openbsd        ntfsfix        pwd        sh.distrib            systemd-machine-id-setup        uncompress      zforce
busybox       cgroups-mount   dir            fuser       kmod        lsmod       netcat            ntfsinfo       rbash      sleep                 systemd-notify                  unicode_start   zgrep
bzcat         cgroups-umount  dmesg          fusermount  less        mkdir       netstat           ntfsls         readlink   ss                    systemd-tmpfiles                vdir            zless
bzcmp         chacl           dnsdomainname  getfacl     lessecho    mknod       networkctl        ntfsmove       red        static-sh             systemd-tty-ask-password-agent  vmmouse_detect  zmore
bzdiff        chgrp           domainname     grep        lessfile    mktemp      nisdomainname     ntfstruncate   rm         stty                  tailf                           wdctl           znew
bzegrep       chmod           dumpkeys       gunzip      lesskey     more        ntfs-3g           ntfswipe       rmdir      su                    tar                             which
bzexe         chown           echo           gzexe       lesspipe    mount       ntfs-3g.probe     open           rnano      sync                  tempfile                        whiptail
bzfgrep       chvt            ed             gzip        ln          mountpoint  ntfs-3g.secaudit  openvt         run-parts  systemctl             touch                           ypdomainname
bzgrep        cp              efibootmgr     hciconfig   loadkeys    mt          ntfs-3g.usermap   pidof          sed        systemd               true                            zcat
bzip2         cpio            egrep          hostname    login       mt-gnu      ntfscat           ping           setfacl    systemd-ask-password  udevadm                         zcmp
bzip2recover  dash            false          ip          loginctl    mv          ntfscluster       ping6          setfont    systemd-escape        ulockmgr_server                 zdiff
bzless        date            fgconsole      journalctl  lowntfs-3g  nano        ntfscmp           plymouth       setupcon   systemd-hwdb          umount                          zegrep
duxing@duxing-X550JK:~$ which cut
/usr/bin/cut
duxing@duxing-X550JK:~$ /usr/bin/cut
/usr/bin/cut: you must specify a list of bytes, characters, or fields
Try '/usr/bin/cut --help' for more information.

補充:在寫本文的時候發現其實在終端執行/bin/cut的時候已經可以得到出錯原因了,bash: /bin/cut: No such file or directory已經提示了/bin/cut不存在,而執行/usr/bin/cut的提示是沒有參數。

轉載于:https://www.cnblogs.com/DataNerd/p/8987990.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250354.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250354.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250354.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鏈式前向星(轉)

轉自大佬博客https://blog.csdn.net/ACdreamers/article/details/16902023 我們首先來看一下什么是前向星. 前向星是一種特殊的邊集數組,我們把邊集數組中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序, 并記錄下以某個點為起點的所有邊在數組中的起始位…

javascript --- [FormData的使用] 表單元素轉換成表單 對象二進制文件上傳

1. FormData的作用 1.1 將Form表單元素,轉換成表單對象 在使用Ajax進行表單提交的時候,采用原生的js獲取dom,然后添加屬性.當表單項很多的時候,代碼會很多.不利于后期閱讀、維護. 這時,可以使用FormData對象,將HTML中的表單元素轉換成表單對象,如下: <!-- 表單對象 -->…

android studio gradle 國內代理

使用阿里云的國內鏡像倉庫地址&#xff0c;就可以快速的下載需要的文件 修改項目根目錄下的文件 build.gradle &#xff1a; buildscript { repositories { maven{ url http://maven.aliyun.com/nexus/content/groups/public/} } } allprojects { …

爬蟲—01-爬蟲原理與數據抓取

爬蟲的更多用途 12306搶票 網站上的頭票 短信轟炸關于Python網絡爬蟲&#xff0c;我們需要學習的有&#xff1a; Python基礎語法學習&#xff08;基礎知識&#xff09;對HTML頁面的內容抓取&#xff08;數據抓取&#xff09;對HTML頁面的數據提取&#xff08;數據提取&#xff…

javascript --- [FormData的使用] 文件上傳進度條展示 文件上傳圖片即使預覽

1. 準備工作 因為要發送Ajax請求,而Ajax技術的運行需要網站環境,因此其中一個解決方案是,將頁面作為網站的靜態資源暴露出來,然后通過瀏覽器進行訪問. 1.1 靜態資源 使用express將public下面的資源暴露出來在根目錄下面新建一個public文件夾和一個app.js文件 // app.js con…

2018年春閱讀計劃---閱讀筆記4

uml圖的幾大特點&#xff1a;容易掌握 2.面向對象 3.可視化&#xff0c;表達能力強大 4.容易掌握使用 5.與編程語言的關系。用c&#xff0c;java等編程語言可以實現一個系統&#xff0c;支持uml 的一些工具&#xff0c;可以根據uml所建立的系統模型自動產生代碼框架。 uml的5類…

TP5之安全機制

防止sql注入 1、查詢條件盡量使用數組方式&#xff0c;具體如下&#xff1a; 1 $wheres array(); 2 3 $wheres[account] $account; 4 5 $wheres[password] $password; 6 7 $User->where($wheres)->find(); 2、如果必須使用字符串&#xff0c;建議使用預處理機制&am…

javascript --- [jsonp] script標簽的妙用(繞過同源限制)

1. 同源 1.1 什么是同源 協議、域名、端口號相同 1.2 為什么有同源政策 同源政策是為了保護用戶信息的安全,放置惡意的網站竊取數據。最初的同源政策是指A網站再客戶端設置的Cookie,B網站是不能訪問的. 隨著互聯網的發展,同源政策也越來越嚴格,在不同源的情況下,其中有一項…

SQL登錄報錯

在安裝完SQL后&#xff0c;發現報出了error40和53的錯誤&#xff0c;作為小白的我也是一臉懵逼&#xff0c;明明一切都是按照默認加下一步安裝的&#xff0c;為什么到了連接數據庫的時候就出現了問題呢&#xff1f; 后來經過調查&#xff0c;發現需要將sql配置管理的ip中的一項…

復活

此刻--復活轉載于:https://www.cnblogs.com/lyqlyq/p/9881646.html

javascript --- 瀑布流的實現

說明 源代碼 1. 瀑布流 出現問題: 設計給的圖片不是同一個尺寸大小,因此不能規則的放入到給定的DOM結構中.此時,需要使用瀑布流技術來解決這個問題 解決的思路: 讓圖片等寬、不等高 核心: 用到了定位 img {position: absolute;left: 最小的索引 * 圖片的寬度;top: 最小的圖…

不同權限訪問詳細細節

1 package com.package1;2 3 /**4 * 程序執行入口和調用方法在不同類但在同一個包中&#xff0c;除了private方法&#xff0c;其他任何權限的方法都可以都可相互調用5 * author Administrator6 *7 */8 public class Source {9 public static void main(String[] args) …

洛谷P2822組合數問題

傳送門啦 15分暴力&#xff0c;但看題解說暴力分有30分。 就是找到公式&#xff0c;然后套公式。。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;long long read(){char ch;bool f false;wh…

基于Docker的GoldenGate部署

前言Docker最近幾年異常火爆&#xff0c;主要是因為其方便、快捷、輕量&#xff0c;相對于VM&#xff0c;它不需要占用太多資源&#xff0c;隨時可以創建、刪除&#xff0c;或在已有image上添加一些軟件&#xff0c;再制作成另一個模板image供日后使用。Docker提供的Hub或priva…

javascript --- 防抖與節流

說明 源碼 1. 防抖與節流 1.1 防抖 防抖: 觸發事件后,在n秒內函數只執行一次 記憶: 你手比較抖,不小心按了按鈕2下…你只希望它只執行一次.且按第二次結束時間算…這就用到了防抖技術 1.2 節流 節流: 連續發生的事件,在n秒內只執行一次函數 1.3 防抖與節流的區別 在一段…

bugku_本地包含

先上payload: 1、?hello);show_source(%27flag.php%27);// 2、?hello);include $_POST[zzz];// POST傳參:zzzphp://filter/readconvert.base64-encode/resourceflag.php 3、?hellofile(%27flag.php%27) 4、?helloshow_source(flag.php) 首先我們來看源碼&#xff1a; <?…

javascript --- js中的作用域 變量提升

1 求以下函數的輸出 1.1 考察點: 變量提升、this、作用域 // 考察點 作用域、this、變量提升 var a 10 function test() {a 100console.log(a) console.log(this.a) var aconsole.log(a) } test()第一個和第三個肯定是100在node環境下,沒有window的概念,因此輸出的是 und…

洛谷1091合唱隊形

題目描述 N位同學站成一排&#xff0c;音樂老師要請其中的(N?K)位同學出列&#xff0c;使得剩下的K位同學排成合唱隊形。 合唱隊形是指這樣的一種隊形&#xff1a;設K位同學從左到右依次編號為1,2,…,K&#xff0c;他們的身高分別為T1?,T2?,…,TK?&#xff0c; 則他們的身高…

poj3069 Saruman's Army(貪心)

https://vjudge.net/problem/POJ-3069 弄清楚一點&#xff0c;第一個stone的位置&#xff0c;考慮左右兩邊都要覆蓋R&#xff0c;所以一般情況下不會在左邊第一個&#xff08;除非前兩個相距>R&#xff09;。 一開始二層循環外層寫的i1&#xff0c;這樣對于數據諸如1 1 1>…

Redis的key和value大小限制

Redis的key和value大小限制今天研究了下將java bean序列化到redis中存儲起來&#xff0c;突然腦袋靈光一閃&#xff0c;對象大小會不會超過redis限制&#xff1f;不管怎么著&#xff0c;還是搞清楚一下比較好&#xff0c;所以就去問了下百度&#xff0c;果然沒多少人關心這個問…