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

时间: 2024-11-04 03:43:43

Hive脚本中切勿使用/**/注释的相关文章

HUE中Oozie执行Hive脚本

Oozie执行hive,传入参数1. 新建一个workflow 2. 拖入一个hive2 3. hive脚本如下 CREATE TABLE IF NOT EXISTS spider_tmp.org_invest_fund_${date} ( `id` int, `info_id` int, `company` string, `company_url` string, `legal_person` string, `reg_capital` string, `establish_date` st

使用spark对hive表中的多列数据判重

本文处理的场景如下,hive表中的数据,对其中的多列进行判重deduplicate. 1.先解决依赖,spark相关的所有包,pom.xml spark-hive是我们进行hive表spark处理的关键. <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version

shell脚本中的dat,计算器,内置变量的用法

什么是shell脚本.首先它是一个脚本,并不能作为正式的编程语言.因为是跑在linux的shell中,所以叫shell脚本.说白了,shell脚本就是一些命令的集合.举个例子,我想实现这样的操作: 1)进入到/tmp/目录: 2)列出当前目录中所有的文件名: 3)把所有当前的文件拷贝到/root/目录下: 4)删除当前目录下所有的文件. 简单的4步在shell窗口中需要你敲4次命令,按4次回车.这样是不是很麻烦?所以不妨把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完

shell脚本中执行另一个shell脚本

分类: 可以在一个shell脚本中执行另一个shell脚本(或非可执行文件,主要用于取得一些变量的值),方法是: . 文件名(包括路径) 或 变量=文件名(包括路径) . $变量 注意,圆点后面有个空格. 这样,在本shell脚本的后面部分就可以引用其他文件中声明的一些变量. 当再用这些变量去执行第3个脚本时,我不知是怎么回事,总是有些莫名其妙的错误,发现只有这个文件中不存在空行才行,哪怕只有一个注释符,都不会出错,就是不能有空行. 其实我想应该也不是这个问题,而是windows和linux处理

切勿创建包含auto_ptr的容器对象

 当你拷贝一个auto_ptr时,它所指向的对象的所有权被移交到拷入的auto_ptr上,而它自身被置为NULL.我的理解是:拷贝一个auto_ptr意味着改变它的值.例如: auto_ptr<int> pint1(new int);//pint1指向一个int auto_ptr<int> pint2(pint1);//pint2指向pint1的int:pint1被置为NULL pint1 = pint2;//现在pint1又指向int了:pint2被置为NULL 在看一种实现

JSP中的几种注释

JSP中的几种注释: HTML中的注释:格式为<!--注释内容-->,注释内容在客户端浏览里是看不见的,但是在查看源代码时可以在客户端看见,称为显示注释.该注释不安全. JSP文件中的注释:格式为<%--注释内容--%>,客户端在查看源代码时看不到注释内容,称为隐式注释,安全性比较高. JavaScript中的注释:脚本就是嵌入到<%与%>之间的代码,使用的语言是Java语言.该注释分文两种:单行注释和多行注释.均为隐式注释. 单行注释: <% //注释内容 %&

切勿辜负青春一场

简述 趁年轻依旧,不要浪费这美好时光:趁梦想还在,切勿辜负这青春一场.梦想还是要有的,万一实现了呢! 梦想不是靠"梦"和"想"来实现的,有梦想就应该付诸行动.倘若你晚上踌踌满志,白天却天马行空,那么就真的变为"梦"和"想"了.不走几步,怎么知道不会点燃热情呢?不逼自己一把,又如何知道你有多么出色? 简述 曾经的大学梦 收集的知识 腹肌人鱼线 任何有梦想的人都值得尊重 起飞吧梦想 老男孩 曾经的大学梦 十五岁的时候,你对自己说,

shell脚本中select的应用

select也是循环的一种,它比较适合用在用户选择的情况下. 比如,我们有一个这样的需求,运行脚本后,让用户去选择数字,然后执行命令! #!/bin/bash select mysql_v in 5.1 5.6 do case $mysql_v in 5.1) echo "you choose the 5.1" #break                                        /break这行被注释掉了  ;; 5.6) echo "you choo

使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法

技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主键id等一些关键数据在后台不易获取,或在后台获取数据后不易直接在前台通过js使用. 这种情况下,使用js+ajax的方式来实现,效果也是不错的. 1.编写webservice: 1 using System; 2 using System.Collections.Generic; 3 using S