《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.mzph.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;果然没多少人关心这个问…