写hive sql和shell脚本时遇到几个蛋疼的问题!
错误一:
Hive的where后不能用字段的别名,
错误二:
hive的groupby中不能用自己定义函数,否则报错(用嵌套select取代)
错误三:
运行:$ ./hive_game_operationstatis5.sh时,报错信息例如以下:
./hive_game_operationstatis5.sh:line 11: [: missing `]'
./hive_game_operationstatis5.sh:line 17: /tmp/statis_activitysourcestatis20141014/statis_activitysourcestatis120141014.txt:No such file or directory
./hive_game_operationstatis5.sh:line 36:/tmp/statis_activitysourcestatis20141014/statis_activitysourcestatis220141014.txt:No such file or directory
ERROR 2 (HY000) atline 1: File'/tmp/statis_activitysourcestatis20141014/statis_activitysourcestatis120141014.txt'not found (Errcode: 2)
ERROR 2 (HY000) atline 1: File'/tmp/statis_activitysourcestatis20141014/statis_activitysourcestatis220141014.txt'not found (Errcode: 2)
错误分析:
因为11行的创建文件夹代码没起作用,所以导致后边一系列找不到文件路径的错误。
报错时的代码:
if [ ! -d $output]
then
mkdir -p $output
fi<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
改动后的代码:
if [ ! -d $output]
then
mkdir -p $output
fi
看到区别了没??$output与]之间应该有个空格!
。
错误四:date不能识别
运行./hive_game_operationstatis6.sh脚本时。报错例如以下:
./hive_game_operationstatis6.sh:line 12: [: /tmp/statis_suspendedwindowstatisdate: binary operator expected
./hive_game_operationstatis6.sh:line 21: $output/$file_name1: ambiguous redirect
./hive_game_operationstatis6.sh:line 39: $output/$file_name2: ambiguous redirect
./hive_game_operationstatis6.sh:line 56: $output/$file_name3: ambiguous redirect
./hive_game_operationstatis6.sh:line 73: $output/$file_name4: ambiguous redirect
./hive_game_operationstatis6.sh:line 90: $output/$file_name5: ambiguous redirect
分析:
在shell脚本中我是这样写:
output='/tmp/statis_suspendedwindowstatis'$date
file_name1='statis_suspendedwindowstatis1'$date'.txt'
错误显示是指调用时”模糊的重定向”!
单从错误提示上看不出个所以然来。请直接看出错代码:
改动之前代码:
date=’date +%Y%m%d’
改动此bug之后代码:
date=`date +%Y%m%d`
大家看到哪里出错了没??哈哈,是的,太坑啦!
shell要用键盘上1前边的‘撇’,而不能用双引號那个‘撇’儿。
。
假设一个变量后是字符串的话直接用回车左边那个’撇‘就能够,
对于我这个初次接触shell的人。简直头疼到了极点!
希望大家不要犯类似的错误。
写hive sql和shell脚本时遇到几个蛋疼的问题!的更多相关文章
- 执行shell脚本时提示bad interpreter:No such file or directory的解决办法
执行shell脚本时提示bad interpreter:No such file or directory的解决办法 故障现象:在终端直接cd /var正常,在shell脚本中执行则报错.原因是脚本是 ...
- python调用shell脚本时需要切换目录
最近遇到了一个问题,就是python代码调用shell脚本时,发现输入输出的文件,总是和自己预想的有偏差,但是单独在linux下执行命令的时候,却没有错误.后来发现是相对路径的问题,因为执行pytho ...
- hive streaming 使用shell脚本
一.HIVE streaming 在Hive中,需要实现Hive中的函数无法实现的功能时,就可以用Streaming来实现.其原理可以理解成:用HQL语句之外的语言,如Python.Shell来实现这 ...
- 批量执行 sql 的 shell 脚本
最近有用到需要批量导入N个表的sql,一个个导入会吐老血的,写了个shell脚本,便捷导入. 通常我们导入单个sql,可以用 $mysql -uroot -p world < xxxx.sql ...
- linux执行shell脚本时提示bad interpreter:No such file or directory的解决办法
故障现象:在终端直接cd /var正常,在shell脚本中执行则报错.原因是脚本是在windows平台下写的,换行符与Linux不同,造成脚本不能正确执行 出现bad interpreter:No s ...
- 执行shell脚本时提示/bin/sh^M: bad interpreter: No such file or directory
执行脚本时提示解释器有问题,错误提示如下: 这种提示一般是脚本在windows系统之通过记事本写的,记事本修改过的文本,会默认在文本前面加上一些看不到的标记,导致shell脚本不能被shell解释器识 ...
- 关于shell脚本时遇value too great for base (error token is "08")
今天在书写一个定时cp脚本时遇到了一个问题,value too great for base (error token is "08") 在网上查看到原来是以0开头的数字 系统会默 ...
- centos分配IP脚本--写的第一个shell脚本
IDC小菜鸟一枚,非科班出身.常常有客户的centos服务器需要分配15个IP甚至30个IP.每次需要手动分配十分麻烦,于是花了一天时间学了shell脚本,写了这个脚本. #!/bin/bash re ...
- linux脚本错误: line *: [: missing `]',linux编写shell脚本时的注意点
转载:https://www.cnblogs.com/bovenson/p/4548079.html 关于shell的一些注意点,粘贴自拉钩教育精选评论:测试开发核心技术 46 讲-->第6讲 ...
随机推荐
- Creating Contextual Menus创建上下文菜单
A contextual menu offers actions that affect a specific item or context frame in the UI. You can pro ...
- IntelliJ IDEA 14 注册码生成java代码(转)
https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases 分享几个license: ( ...
- 定义Java类的数组的问题
定义了一个类: class Student{ private int Id; public int getId() { return Id; } public void setId(int id) { ...
- Mac中如何写NTFS的移动硬盘
Mac中如何写NTFS的移动硬盘 按 照网上的说法,简单的就是购买Paragon NTFS或者Tuxera NTFS之类的收费软件,不想花钱的就用NTFS-3G.作为一个开发人员,既然能够自己解决,当 ...
- TSL230选型
tsl230是一种可以直接将光强转化成频率值的器件.详细原理就不介绍了,数据手冊里写的都非常清楚,230系列包括非常多种,主要为下面四类:TSL230,TSL230A,TSL230B系列:TSL230 ...
- 获得树形json串
public class TreeNode { private long nodeId; private String nodeName; private long fatherNod ...
- 利用 C++ 单向链表实现队列
利用C++ 单向链表实现数据结构队列,其实和上一篇基本内容相同,仅仅是插入的时候在链表的尾部插入,取元素都是一样的,都从头部取. #pragma once #include "stdio.h ...
- angularjs入门学习【指令篇】
一.首先我们来了解下指令API 属性 含义 restrict 申明标识符在模版中作为元素,属性,类,凝视或组合,怎样使用 priority 设置模版中相对于其它标识符的运行顺序 Template 指定 ...
- .Net程序猿玩转Android开发---(7)相对布局RelativeLayout
相对布局RelativeLayout是Android布局中一个比較经常使用的控件,使用该控件能够布局出适合各种屏幕分辨率的布局,RelativeLayout採用相对位置进行 ...
- 广东省-IT红黑榜排名公司名称
红榜Top100 Order Company Name Point Change 1 百富计算机技术(深圳)有限公司 94.00 -- 2 中国网通广州分公司 88.00 -- 3 深圳市汇 ...