Hive脚本中切勿使用/**/注释
时间:2019-10-20
本文章向大家介绍Hive脚本中切勿使用/**/注释,主要包括Hive脚本中切勿使用/**/注释使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Hive脚本中切勿使用/**/注释
Hive脚本的注释目前好像只有 -- ,我之前在做初版数据的时候 使用NotePad++ 习惯性的有时候注释会写成 /**/ ,然后就引发了问题
脚本上传到hue,加入调度,调度正常执行 不报错,但是应该有的数据却为空!!! 奇了怪了.... (反复执行了好多遍,都没有数据,脚本都没有问题呀 一段一段copy执行的时候都正常的)
再仔细看看 ,原因问题出在注释上,在hive脚本里面我不小心留了两行注释 格式为 /* 注释内容 */ 的内容
造成的结果: /*注释内容*/ 前面的脚本内容正常执行,/* 注释内容*/ 后面的脚本内容统统没有执行,所以很多该有的数据都为空了....
错误脚本内容示例:
insert.hql
use bgda_hw_stg;
set hive.auto.convert.join=false;
drop table testdata ;
create table testdata(
createUser string
,createTime string
,updateUser string
,updateTime string
) row format delimited fields terminated by '\001';
insert overwrite table testdata
select
,'小仙女' as createUser
,cast(from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') as string)as createTime
,'小天使' as updateUser
,'' as updateTime
;
/* 将T+1数据插入testdata_bak表中 testdata_bak表在初始化的时候已经创建,目前已存在于bgda_hw_stg库中*/
insert into testdata_bak select * from testdata;
以上脚本信息中:由于注释方式
/* 将T+1数据插入testdata_bak表中 testdata_bak表在初始化的时候已经创建,目前已存在于bgda_hw_stg库中*/
导致 insert into testdata_bak select * from testdata; 这段hql 不会被执行,但是整个调度也不会报错!!!
所以这个一定要注意一下哦,注释方式一定要正确的写,如果发现脚本执行没有报错 但是该有的数据没有 可以查看以下脚本中是否存在不规则的注释...(不过大部分数据错处应该是及脚本逻辑问题哈哈哈)
正确示例:
insert.hql
use bgda_hw_stg;
set hive.auto.convert.join=false;
drop table testdata ;
create table testdata(
createUser string
,createTime string
,updateUser string
,updateTime string
) row format delimited fields terminated by '\001';
insert overwrite table testdata
select
,'小仙女' as createUser
,cast(from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss') as string)as createTime
,'小天使' as updateUser
,'' as updateTime
;
-- 将T+1数据插入testdata_bak表中 testdata_bak表在初始化的时候已经创建,目前已存在于bgda_hw_stg库中
insert into testdata_bak
select * from testdata;
原文地址:https://www.cnblogs.com/DFX339/p/11706808.html
- 垂直属性
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)
- 13(02)总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character
- Mybatis-Generator生成Mapper文件中<if test="criteria.valid">的问题解答
- Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程
- 负margin的原理以及应用
- 关于exp/imp的总结学习(r4笔记第26天)
- 除了写烂的手写数据分类,你会不会做自定义图像数据集的识别?!
- shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
- 绝对定位下的盒模型
- 运行shell脚本时报错"[[ : not found"解决方法
- 关于表联结方法(二) (r4笔记第23天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API
- XSS分析及预防
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django-rest-framework中过滤器的定制实例
- Python greenlet和gevent使用代码示例解析
- 完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
- Android开发中Intent.Action各种常见的作用汇总
- Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题
- Android添加ButterKnife时报错Error:(2, 0) Cannot add extension with name 'android'的解决办法
- Python视频编辑库MoviePy的使用
- python json.dumps中文乱码问题解决
- Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式
- Android开发导入项目报错Ignoring InnerClasses attribute for an anonymous inner class的解决办法
- Android中buildToolVersion与CompileSdkVersion的区别
- Glide用法与技巧以及优秀库的推荐
- Android整理好的图片压缩工具类
- Android Studio获取网络JSON数据并处理的方法
- Android使用ViewPager快速切换Fragment时卡顿的优化方案