Skip to Content

什么是SDI

SDI,即Smart Data Integration,是集成到HANA中的一个数据迁移和同步工具。通过SDI,我们可以用图形化的方式对远程数据源(如OracleDB2Hive等)的数据做过滤、连接、类型转换等操作,然后导入到HANA

使用SDI要做的工作

  1. 启动HANADP Server
  2. 安装配置DP Agent
  3. 注册DP Agent
  4. 注册 Adapter
  5. 创建远程数据源及虚表
  6. 创建并激活数据流图
  7. 执行存储过程

启动HANADP Server

Data Provisioning ServerHANA的一个native进程,它与DP Agent或远程数据源进行数据交互。DP ServerHANA自带组件,不需要额外安装,但默认情况下DP Serverdisabled,所以我们需要将其enable。激活方法是:Configuration选项卡àdaemon.iniàdpserveràinstances1

/wp-content/uploads/2015/03/1_655418.png

该属性是change online,不需要重启HANA

DP Server启动完成后可以在Services选项卡中看到dpserver的状态为active

/wp-content/uploads/2015/03/2_655419.png

安装配置DP Agent

1. 从SAP Software Download Center下载DP Agent安装包“data_provision_agent_xxxxxxxx.zip”。

2. 解压zip包,将其中的DATA_UNITS\HANA_DP_AGENT_10_LIN_X86_64文件夹copy到要安装的linux机器上(当然你也可以安装windows版的)。

3. 执行./hdbinst

/wp-content/uploads/2015/03/3_655420.png

输入安装路径。

/wp-content/uploads/2015/03/4_655421.png

输入用于DP Agent服务的用户名、监听端口和管理端口。

4. 进入DP Agent安装路径,运行配置工具:

/wp-content/uploads/2015/03/5_655422.png

5. 在弹出的对话框中点击ConfigureàPreferences

/wp-content/uploads/2015/03/6_655423.png

DP Agent的配置界面,你可以配置Adapter Framework和各个Adapter的参数,Adapter Framework的参数适用于所有Adapter,比如Worker Thread Pool是线程池的容量,即并行导入的最大线程数。

注册DP Agent

1. 运行DP Agent的配置工具:

/wp-content/uploads/2015/03/7_655424.png

/wp-content/uploads/2015/03/8_655425.png

2. 先要连接到一个HANA系统,点击Connect to HANA

/wp-content/uploads/2015/03/9_655426.png

在弹出的对话框中填入HANA系统的链接信息,这里既可以连接到On PremiseHANA,也可以连接到On CloudHANA

3. 连接HANA之后就可以看到现有的所有Adapter

/wp-content/uploads/2015/03/10_655427.png

然后点击Register Agent按钮,弹出对话框:

/wp-content/uploads/2015/03/11_655428.png

点击Register按钮完成注册,注册成功后在HANA Studio中查看视图“SYS”.“AGENTS”

/wp-content/uploads/2015/03/12_655429.png

可以看到”srsserverAgent”已经成功注册到HANA系统。

注册Adapter

DP Agent注册成功后,还需要将要连接的远程数据源对应的Adapter注册到HANA系统。

1. 将要连接的数据源的JDBC驱动文件(例如OracleJDBC驱动文件ojdbc6.jar)拷贝到DP Agent安装目录的lib子文件夹下:

<DP_AGENT_INSTALL_DIR>/lib

默认为:/usr/sap/dataprovagent/lib

2. 在配置工具界面的Adpaters列表中选择远程数据源的Adapter,例如,要连接Oracle则选择OracleLogReaderAdapter,然后点击Register Adapter按钮。

/wp-content/uploads/2015/03/13_655430.png

3. Adapter注册成功后,在HANA中查看视图“SYS”.“ADAPTERS”

/wp-content/uploads/2015/03/14_655431.png

可以看到OracleLogReaderAdapter已经成功注册到HANA系统。

创建远程数据源及虚表

1. 创建SDI远程数据源和创建SDA远程数据源类似,在Adapter Name栏选择远程数据源对应的Adapter,例如连接Oracle则选择OracleLogReaderAdapter

2. Oracle数据源为例,Instance NameDP Agent中创建的实例名称,你可以使名称和数据源名称一致,Administration Port是该instance的管理端口,默认是13456

/wp-content/uploads/2015/03/15_655432.png

3. 创建虚表方法和SDA一致。

创建并激活数据流图

1. 在repositoryHANA XS project中新建一个数据流图:

/wp-content/uploads/2015/03/16_655433.png

/wp-content/uploads/2015/03/17_655434.png

/wp-content/uploads/2015/03/18_655435.png

2. 使用拖拽的方式构建一个数据流图:

/wp-content/uploads/2015/03/19_655436.png

可以选中各个节点,然后在其属性框中设置其属性,例如,JOIN节点的属性框如下所示:

/wp-content/uploads/2015/03/20_655437.png

3. 保存并激活数据流图:

/wp-content/uploads/2015/03/21_655438.png

执行存储过程

1. 数据流图成功激活后,我们在数据流图所在的schema下可以看到生成了一个存储过程:

/wp-content/uploads/2015/03/22_655439.png

2. 存储过程内容如下:

CREATE PROCEDURE “SDI”.“LEO.SDI::sdi_fg1”()

LANGUAGE SQLSCRIPT SQL SECURITY INVOKER

AS

BEGIN

ORCL_DS_TSTTAB_DATA_TAB = SELECT “ID”, “NAME” FROM “SDI”.“orcl_ds_TSTTAB”;

ORCL_DS_TSTTAB_2_DATA_2_TAB = SELECT “ID”, “NAME” FROM “SDI”.“orcl_ds_TSTTAB”;

SORT_OUTPUT_TAB=SELECT “ID”, “NAME” FROM :ORCL_DS_TSTTAB_DATA_TAB ORDER BY “ID” ASC;

JOIN_OUTPUT_2_TAB = SELECT “INPUT1”.“ID” AS “ID”, “INPUT2”.“NAME” AS “NAME_2” FROM (:SORT_OUTPUT_TAB AS “INPUT1” INNER JOIN :ORCL_DS_TSTTAB_2_DATA_2_TAB AS “INPUT2” ON “INPUT1”.“ID”=“INPUT2”.“ID”);

SELECT “ID” AS “ID”, “NAME_2” AS “NAME_2” FROM :JOIN_OUTPUT_2_TAB INTO “SDI”.“SORTED_JOINED_TSTTAB”;

END

3. 调用该存储过程即可完成数据导入。

参考资料

SAP HANA EIM Administration Guide

SAP HANA Academy – Smart Data Integration/Quality : SAP ECC Replication [SPS09]

想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!

转载本文章请注明作者和出处http://scn.sap.com/community/chinese/hana/blog/2015/03/01/sdi%E7%9A%84%E9%83%A8%E7%BD%B2%E5%8F%8A%E7%AE%80%E5%8D%95%E4%B…,请勿用于任何商业用途。

To report this post you need to login first.

1 Comment

You must be Logged on to comment or reply to a post.

  1. Bing Liu

    Hi Leo.

    I implemented SDI sps11 recently. This blog article is very helpful.  Thanks for Leo’s contribution.

    Personally, I’d like to create a Flowgraph in Web-based Dev Workbench(SPS10).



    (0) 

Leave a Reply