最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

在SAP HANA中执行定时任务

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-30 10:15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
设想这样一种情况, 你每隔一段时间就会收到一批数据文件, 然后需要把这些文件导入到SAP HANA中. 在一般情况下,你至少需要写一个导入数据的脚本程序, 然后再利用定时任务管理器去调度这个定时任务. 如果你用的是SAP HANA, 可能会问, SAP HANA提供的功能这么多样化, 包括文本分析, PAL, WEB 服务器等等, 在SAP HANA能让它定时执行某些任务吗?
          在SAP HANA SPS07版本之前, 我只能遗憾的告诉你, 这个还不行, 不过SAP HANA SPS07之后, 让一切变得简单起来, 并且非常的Cool. 你可以让SAP HANA自动的定时去执行你想让它完成的任务, 只需要SAP HANA就够, 它能自己调度定时任务!
          简单来说, SAP HANA的定时任务调度利用到了XS Engine, 用它来对定时任务进行管理,  可以调度SQLScript脚本与javascript脚本两种类型的程序. 废话不多说, 下面直接进入示例子.
一  环境配置
        首先,  建议对SAP HANA的配置稍微修改一下, 如下图.
     在默认情况下, indexserver.ini中, repository小节中的sqlscript_mode是default. 建议改成’UNSECURE’ , 如下图所示.
default模式下,只能读取数据, 无法作insert操作, 在编写存储过程的时候直接会报错.
     另外,对于你要操作的SCHEMA, 为_SYS_REPO用户分配必需的权限. 否则activate的时候会报错. 比如下面的截图.
     所以需要给_SYS_REPO用户分配关于WEIYY这个SCHEMA的所有权限. 设想一下, 当你commit给repository的时候, 然后执行activate激活的时候,是由_SYS_REPO用户进行生成相关对象的,所以_SYS_REPO必须相应的权限.
     最后, 还需要开启xsengine中对任务调度的支持, 如下图所示, 在xsengine.ini中, 添加一个scheduler小节, 添加enabled属性, 值为true.  这样,环境我们就准备好了.

二  定时任务
             任务本身的描述有两种方式, 前面说过了, 可以是一个javascript任务, 具体来说是xsjs文件中的某个函数. 另外一种方式是SQLScript, 具体来说就是一个存储过程.  对任务的调度信息描述由xsjob文件进行描述,  下面由例子说明, 我们将分别实现一个javascript定时任务跟SQLScript定时任务.
             首先我们在SAP HANA Studio中新建一个XS Project, 并新建一个.xsapp文件(具体参考开发文档). 然后建立一个jsjobtest.xsjs文件, 这是一个xsjs类型文件, 里面包含一个函数myjsjob, 这个函数就是我们的任务要做的事情, 具体来说就是往TESTTBL中插入一条记录, 记录当前时间及提示信息.
File:jsjobtest.xsjs




  • function myjsjob() {  
  •     var sql = "INSERT INTO WEIYY.TESTTBL VALUES (NOW(), 'inserted from javascript job')";  
  •     var conn = $.db.getConnection();  
  •     var pstmt = conn.prepareStatement(sql);  
  •     pstmt.execute();  
  •     conn.commit();  
  •     conn.close();  
  • }  

然后,我们需要一个xsjob文件, 来描述这个任务何时被调度.
File:myjsjobdesc.xsjob
{
    "description": "my first javascript job",
    "action": "weiyy.scheduletest:jsjobtest.xsjs::myjsjob",
    "schedules": [
    {
    "description": "run every 5 seconds",
    "xscron": "* * * * * * 0:59/5"
    }
}
     在description中,输入对任务的描述, action中指定任务的文件, 及对应的函数入口, schedules中指定调度时间. 这个跟Linux环境下的crontab语法类似, 这里我们指定每5秒钟执行一次.
             我们再添加一个SQLScript任务. 同样也是往TESTTBL中插入数据, 但提示信息不同.
File:sqljobtest.procedure




  • CREATE PROCEDURE sqljobtest ( )   
  •      LANGUAGE SQLSCRIPT  
  •      SQL SECURITY INVOKER  
  •      --DEFAULT SCHEMA <schema>  
  • AS  
  • BEGIN  
  • /*****************************   
  •      Write your procedure logic   
  • *****************************/  
  • insert into WEIYY.TESTTBL(T,INFO) VALUES(NOW(),'insertted from SQLScript job');  
  • END;  

这里我们让它每10秒钟运行一次.

File:mysqljobdesc.xsjob

{
    "description": "my first SQLScript job",
    "action": "weiyy.scheduletest::sqljobtest",
    "schedules": [
    {
    "description": "run every 10 seconds",
    "xscron": "* * * * * * 0:59/10"
    }
}

[注意:js任务与SQLScript任务的action格式不同]
三 启动定时任务
            添加任务之后, 下一步就是启动这些定时任务.  启动这些定时任务的管理页面基于XS Administration Tool , 并且需要预先分配sap.hana.xs.admin.roles::JobAdministrator这个角色才能管理定时任务. 对于不同的HANA  实例, web地址如下格式所示:http://<WebServerHost>:80<SAPHANAinstance>/sap/hana/xs/admin/

     对于我们的javascript任务,  设置一下User跟Locale参数, 最后勾上”Active”, 任务就算激活了.
对于SQLScript任务, 同样做如下配置
然后回到我们的SAP HANA  Studio, 查寻一下结果.
发现任务已经执行了, 两个任务都有在执行, 并且javascript任务的执行次数更多.
在”_SYS_XS”.”JOBS”系统表中存储了任务相关信息,在”_SYS_XS”.”JOB_LOG”系统表可以查看任务的日志信息.
利用XS Engine中的javascript API借口, 还可以实现在运行时动态地添加或者删除定时任务, 有关更多关资料请参考http://help.sap.com/hana/SAP_HANA_Developer_Guide_e


来自群组: SAP HANA精英汇
楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-6-2 18:56

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表