Spark 网页式 开发 (二)


Spark 网页式 开发 (二)

继续上篇讲的,为了达到上述的结果。

第一步:先在oracle数据库中建立对应的表。

我们先建立两张表,code_source 和 code_source_log。

<code>create table code_source(
UNIT_TEST NUMBER (2,0), --是否单元测试
EMAIL_ADDRESS VARCHAR2(3255),
CREATED_PERSON VARCHAR2(255 ),--创建者
TABLE_NAME VARCHAR2(2555 ), --spark的任务输出到数据库的表名
JOB_NAME VARCHAR2(255), --spark job的名称
REMARK VARCHAR2 (2255), --备注
PROJECT_NAME VARCHAR2 (255),--spark 项目的名称
IS_USE NUMBER (1,0), --是否启用
SOURCE_CODE CLOB , --代码
CREATED_TIME TIMESTAMP(6) default sysdate,--创建时间
UPDATED_TIME TIMESTAMP(6) default sysdate,--最后一次更新时间
UPDATED_PERSON VARCHAR2 (255), --最后一次更新的人
UDF1 CLOB , --上一次的代码
UDF2 CLOB , --上上一次的代码
COMMENT_MESSAGE CLOB ,--提交更新代码的评论信息
constraint PK_BI_CONTRACT PRIMARY KEY (PROJECT_NAME,JOB_NAME)
)

create table code_source_log(
\tPROJECT_NAME VARCHAR2(3255),
\tJOB_NAME VARCHAR2(3255),
\tLOGIN_NAME VARCHAR2(3255),
\tUSER_ACTION VARCHAR2(255 ),
\tQUERY_CONTENT VARCHAR2(2555 ),
\tSOURCE_CODE CLOB ,
\tCREATED_TIME TIMESTAMP(6) default sysdate,
\tREMARK VARCHAR2 (2255)
)/<code>

code_source 里面存储着对应的spark的代码。

code_source_log里面存储着用户的查询行为,记录最后一次的用户行为查询 和 更新的代码。

code_source中可以看到 source_code,udf1,udf2 的类型都是clob,是因为业务代码的量很多,如果用varchar2 存储会超过最大限制,所以使用了clob作为存储。

其中udf1,udf2 分别表示记录更新的代码的轨迹,udf1是最近一次更新代码的上一次代码,而udf2是最近一次更新代码的上上一次代码。

之所以这么做的原因是因为我们在写代码的时候可能会写错之后提交了之后想撤回,因此给了用户后悔两次的机会。

那有人问,我想更更上一次的结果这么办呢。

这里就需要用到code_source_log这张表了,这张表记录了用户每次更新的代码,只要用户每次更新代码,就会往 code_source_log中插入一行记录。这样如果需要找很久以前的代码,可以在这张日志表中查找了。

给大家看下code_source中的样例数据:


Spark 网页式 开发 (二)


Spark 网页式 开发 (二)

那么到此为止,数据存储的问题我们算是设计好了,解决完代码的存储之后,我们先不讲前端页面和后端的交互怎么实现。

下一篇章,我会把如何做到spark的job 去读取oracle中的代码文本并解析成class的给大家讲下,毕竟这个是核心,而 前端 和 后段 在这里扮演的角色是为了让用户更加便捷的修改代码。

动态解析的核心就是 Janino 。有兴趣的小伙伴可以自行百度。


分享到:


相關文章: