Java如何遠(yuǎn)程調(diào)用SPL腳本-創(chuàng)新互聯(lián)

在《Java 如何調(diào)用 SPL 腳本》中我們介紹了在 Java 中可以部署集算器 JDBC 來調(diào)用本地 SPL 腳本,那如何能在 Java 中遠(yuǎn)程調(diào)用 SPL 腳本呢?這就是接下來要說的重點(diǎn)!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了清澗免費(fèi)建站歡迎大家使用!

實(shí)現(xiàn)思路通過下圖一目了然:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

部署服務(wù)器

服務(wù)器是運(yùn)行在 Java 平臺上面向分析型的高性能數(shù)據(jù)庫,作為高性能計算數(shù)據(jù)倉庫,服務(wù)器可以在離線跑批、在線查詢、多維分析和內(nèi)存計算等方面提供高效的計算輸出,幫助用戶解決計算中的多種問題。

下面我們先來了解一下服務(wù)器的使用及配置,更多關(guān)于服務(wù)器的介紹可參考集算器在線文檔《教程》服務(wù)器小節(jié)。

1. 服務(wù)器配置

在集算器安裝目錄的 esProc\bin 路徑下,可以找到 esprocs.exe 文件,可以直接運(yùn)行它來啟動或配置服務(wù)器。使用 esprocs 時,會自動在安裝路徑下加載所需的 jar 包,但是需要注意此時使用的配置文件 raqsoftConfig.xml 和 unitServer.xml 必須放置在集算器安裝目錄的 esProc\config 路徑下。運(yùn)行后,打開窗口如下:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

在 esprocs.exe 執(zhí)行時,窗口中會顯示加載初始設(shè)定的信息,這些設(shè)定實(shí)際上是由配置文件 raqsoftConfig.xml 決定的。在右側(cè)的菜單欄中點(diǎn)擊 Options,可以配置服務(wù)器的相關(guān)信息,點(diǎn)擊后彈出服務(wù)器配置窗口如下:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

在頁面中,可以配置授權(quán)文件、主路徑、尋址路徑、日期時間格式、默認(rèn)字符編碼、日志等級、文件緩存區(qū)字節(jié)數(shù)等信息。

下面我們繼續(xù)來了解服務(wù)器的配置,在右側(cè)的菜單欄中點(diǎn)擊 Config,可以配置分機(jī)的相關(guān)信息,點(diǎn)擊后在 Unit 頁面中可以配置分機(jī)信息,如下:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

Temp file timeout 設(shè)定臨時文件的生命周期小時數(shù);Check interval 必須設(shè)定為正值或 0,為檢查過期的間隔秒數(shù);Proxy timeout 為代理生命周期,即遠(yuǎn)程游標(biāo)、任務(wù)空間的生命小時數(shù)。如果 Temp file timeout 或者 Proxy timeout 設(shè)定為 0,則不檢查過期。

分機(jī)列表 Host list 中,可以配置本機(jī)上所有可能用來運(yùn)行服務(wù)器的分機(jī),配置它們的 IP 地址,在進(jìn)程列表 Process list 中,可以為一個 IP 地址配置多個進(jìn)程的端口 Port,其中第一個為主進(jìn)程。服務(wù)器啟動時,會自動在分機(jī)列表中,尋找有空閑進(jìn)程的分機(jī),然后再由分機(jī)將任務(wù)交由某個進(jìn)程執(zhí)行。需要注意的是,IP 地址需要是本機(jī)的真實(shí) IP,在使用多網(wǎng)卡的情況下可以設(shè)定多個 IP。

分機(jī)配置中,Max task number 是該分機(jī)允許執(zhí)行的大作業(yè)數(shù),而 Preferred task number 是該分機(jī)的適合作業(yè)數(shù),當(dāng)分機(jī)中使用了多個進(jìn)程時,適合作業(yè)數(shù)就是分進(jìn)程的總數(shù)。在 Partitions 一欄中,可以選擇每個分機(jī)上所使用的分區(qū)。

服務(wù)器的 Enable clients 頁面中可以設(shè)定客戶端白名單,如下:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

選定 Check clients 后,可以在 Clients hosts 列表中,設(shè)定允許調(diào)用服務(wù)器的 IP 地址白名單,不在設(shè)定范圍中的 IP 地址將無法調(diào)用服務(wù)器執(zhí)行計算。

服務(wù)器設(shè)定完成后,點(diǎn)擊 OK,此時可以自動設(shè)定對應(yīng)的配置文件 unitServer.xml 如下:

<?xml?version="1.0"?encoding="UTF-8"?>

<SERVER?Version="3">

<TempTimeOut>12</TempTimeOut>

<Interval>1800</Interval>

<ProxyTimeOut>12</ProxyTimeOut>

<Hosts>

<Host?ip="192.168.107.1"?maxTaskNum="8"?preferredTaskNum="3">

<Partitions>

<Partition?name="0"?path="d:/file/parallel/node1/0">

</Partition>

<Partition?name="1"?path="d:/file/parallel/node1/1">

</Partition>

</Partitions>

<Units>

<Unit?port="8281">

</Unit>

<Unit?port="8282">

</Unit>

</Units>

</Host>

</Hosts>

<EnabledClients?check="true">

<Host?start="192.168.107.1"?end="192.168.107.1">

</Host>

</EnabledClients>

</SERVER><?xml?version="1.0"?encoding="UTF-8"?><SERVER?Version="3"><TempTimeOut>12</TempTimeOut><Interval>1800</Interval><ProxyTimeOut>12</ProxyTimeOut><Hosts><Host?ip="192.168.107.1"?maxTaskNum="8"?preferredTaskNum="3"><Partitions><Partition?name="0"?path="d:/file/parallel/node1/0"></Partition><Partition?name="1"?path="d:/file/parallel/node1/1"></Partition></Partitions><Units><Unit?port="8281"></Unit><Unit?port="8282"></Unit></Units></Host></Hosts><EnabledClients?check="true"><Host?start="192.168.107.1"?end="192.168.107.1"></Host></EnabledClients></SERVER>

2. 運(yùn)行服務(wù)器

服務(wù)器配置完成后,在分機(jī)運(yùn)行窗口中,點(diǎn)擊 Start 即可開始運(yùn)行服務(wù)器,需要停止服務(wù)可以點(diǎn)擊 Stop,服務(wù)器停止后可以點(diǎn)擊 Quit 退出。如果點(diǎn)擊 Reset,服務(wù)將初始化重新啟動,清除所有的全局變量以及內(nèi)存區(qū)。

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

在分機(jī)啟動時,設(shè)置的各個進(jìn)程會同時啟動,可以點(diǎn)擊 Main 查看分機(jī)主進(jìn)程的執(zhí)行情況,或者點(diǎn)擊對應(yīng)的端口號查看分機(jī)的其它分進(jìn)程執(zhí)行頁面。

在 Linux 系統(tǒng)中,可以運(yùn)行 ServerConsole.sh 來啟動服務(wù)器類:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

打開的分機(jī)運(yùn)行窗口和在 Windows 下是相同的:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

此外,還可以在執(zhí)行命令時添加 -p 參數(shù),非圖形啟動服務(wù)器,此時服務(wù)器將直接執(zhí)行:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

部署集算器 JDBC

將啟動 JAVA 應(yīng)用程序時加載集算器所需的 jar 包及配置文件放到項目中。需要注意的是,集算器 JDBC 所要求的 JDK 版本不得低于 1.6。

1. 加載驅(qū)動 jar

集算器 JDBC 類似一個不帶物理表的數(shù)據(jù)庫 JDBC 驅(qū)動,可以把它簡單的看成是一個只有存儲過程的數(shù)據(jù)庫。另外,集算器 JDBC 是個完全嵌入式計算引擎,已經(jīng)在 JDBC 中完成了所有運(yùn)算,不象數(shù)據(jù)庫那樣 JDBC 只是個接口,實(shí)際運(yùn)算在獨(dú)立的數(shù)據(jù)庫服務(wù)器完成。

如果在 web 應(yīng)用項目下,可以把這些 jar 包放在 WEB-INF/lib 目錄下。集算器 JDBC 需要三個基礎(chǔ) jar 包,都可以在 [安裝目錄]\esProc\lib 目錄下找到:

dm.jar?//集算器計算引擎及JDBC驅(qū)動包

icu4j_3_4_5.jar?//處理國際化

jdom.jar??//解析配置文件dm.jar?//集算器計算引擎及JDBC驅(qū)動包icu4j_3_4_5.jar?//處理國際化jdom.jar??//解析配置文件

除了以上的必需 jar,還有一些為完成特定功能的 jar 包:

比如數(shù)據(jù)庫作為數(shù)據(jù)源,那么還需要相應(yīng)數(shù)據(jù)庫的驅(qū)動 jar 包;
要讀寫 Office 文件,則需要加入 poi*.jar 和 xmlbeans.jar; 要使用繪制圖形功能,則需要加入 SVG 圖形處理相關(guān)的 jar 包,包括 batik*.jar、js.jar、pdf-transcoder.jar、xalan-2.6.0.jar、xercesImpl.jar、xml-apis.jar、xml-apis-ext.jar。

2. 部署 raqsoftConfig.xml

集算器還有個重要的配置文件 raqsoftConfig.xml,可以在 [安裝目錄]\esProc\config 下找到,需復(fù)制后放置在應(yīng)用項目的類路徑下,配置文件的名稱不可改變。

在 raqsoftConfig.xml 文件中,配置了授權(quán)信息、集算器主路徑、dfx 文件尋址路徑、JDBC 遠(yuǎn)程訪問的服務(wù)器地址等各類信息。我們先看下最基本的配置,即集算器授權(quán)文件和服務(wù)器地址的配置:

<?xml?version="1.0"?encoding="?UTF-8"?>??
<Config?Version="2">??
?<Runtime>??
?<Esproc>??
????<!--集算器授權(quán)文件配置,可以是絕對路徑,也可以是相對路徑,使用相對路徑時是相對于類路徑-->??
????<license>esproc.xml</license>??
????<!--試用授權(quán)文件可從潤乾公司官網(wǎng)中下載-->??
?</Esproc>??
?</Runtime>??
<JDBC>??
<!--配置JDBC需遠(yuǎn)程訪問的服務(wù)器地址-->??
<Units>??
<!--為方便多機(jī)熱備,可配置多臺服務(wù)器地址,添加多個<Unit></Unit>節(jié)點(diǎn)-->??
<Unit>192.168.107.1:8281</Unit>??
</Units>????????????????
?</JDBC>??
</Config><?xml?version="1.0"?encoding="?UTF-8"?>??<Config?Version="2">???<Runtime>???<Esproc>??????<!--集算器授權(quán)文件配置,可以是絕對路徑,也可以是相對路徑,使用相對路徑時是相對于類路徑-->??????<license>esproc.xml</license>??????<!--試用授權(quán)文件可從潤乾公司官網(wǎng)中下載-->???</Esproc>???</Runtime>??<JDBC>??<!--配置JDBC需遠(yuǎn)程訪問的服務(wù)器地址-->??<Units>??<!--為方便多機(jī)熱備,可配置多臺服務(wù)器地址,添加多個<Unit/>節(jié)點(diǎn)-->??<Unit>192.168.107.1:8281</Unit>??</Units>????????????????
?</JDBC>??</Config>

Java 調(diào)用

接下來我們以訪問服務(wù)器上的數(shù)據(jù)文件為例,介紹如何在 Java 中遠(yuǎn)程訪問服務(wù)器。

Java 通過 SPL 不僅可以訪問本地文件,還能遠(yuǎn)程訪問服務(wù)器上的數(shù)據(jù)文件,其中包括 Txt、Excel、Json、Csv、Ctx 等多種類型的文件。

訪問時可以通過絕對路徑查文件位置,也可以通過相對路徑查找。這里的絕對路徑和相對路徑都是會到服務(wù)器上去找。使用相對路徑時,則是相對于服務(wù)器中 raqsoftConfig.xml 配置文件中的主目錄,所以,首先我們來配置下服務(wù)器上的主目錄:

在 raqsoftConfig.xml 文件的節(jié)點(diǎn)中添加以下節(jié)點(diǎn):

<!--集算器主路徑,該路徑為單一的絕對路徑-->

?<mainPath>D:\\mainFile</mainPath><!--集算器主路徑,該路徑為單一的絕對路徑-->

?<mainPath>D:\\mainFile</mainPath>

我們把要調(diào)用的文件 employee.txt 放到服務(wù)器的主目錄下面,Java 代碼如下:

public??void?runSPL()?throws?ClassNotFoundException,?SQLException{??
????Connection?con?=?null;??
????PreparedStatement?st;??
????ResultSet?set?;??
????//建立連接??
????Class.forName("com.esproc.jdbc.InternalDriver");??
//onlyServer用于控制當(dāng)前jdbc是否對服務(wù)器進(jìn)行遠(yuǎn)程計算,為true表示遠(yuǎn)程計算;false時表示本地計算??
//注意:屬性值為false,當(dāng)SPL語句使用call?dfx或dfx時,會先使用本地計算,如未計算成功則會進(jìn)行遠(yuǎn)程計算??
????con=?DriverManager.getConnection("jdbc:esproc:local://?onlyServer=true");??
????//直接執(zhí)行SPL語句,返回結(jié)果集??
????st?=?(PreparedStatement)con.createStatement();??
????ResultSet?rs?=?st.executeQuery("$select?*?from?employee.txt");??
?????
????//簡單處理結(jié)果集,將結(jié)果集中的字段名與數(shù)據(jù)輸出???
????ResultSetMetaData?rsmd?=?rs.getMetaData();??
????int?colCount?=?rsmd.getColumnCount();??
????for?(?int??c?=?1;?c?<=?colCount;c++)?{??
????String?title?=?rsmd.getColumnName(c);??
????if(?c?>?1?)?{??
????????System.out.print("\t");??
????}??
????else?{??
????????System.out.print("\n");??
????}??
????????System.out.print(title);??
??}??
????while?(rs.next())?{??
?????for(int?c?=?1;?c<=?colCount;?c++)?{??
???????if?(?c?>?1?)?{??
????????????System.out.print("\t");??
??}??
???????else?{??
????????????System.out.print("\n");??
??}??
?????Object?o?=?rs.getObject(c);??
?????System.out.print(o.toString());??
??}??
??}??
???//關(guān)閉連接??
???if?(con!=null)?{??
????????con.close();??
???}??
}public??void?runSPL()?throws?ClassNotFoundException,?SQLException{??
????Connection?con?=?null;??
????PreparedStatement?st;??
????ResultSet?set?;??
????//建立連接??????Class.forName("com.esproc.jdbc.InternalDriver");??
//onlyServer用于控制當(dāng)前jdbc是否對服務(wù)器進(jìn)行遠(yuǎn)程計算,為true表示遠(yuǎn)程計算;false時表示本地計算??//注意:屬性值為false,當(dāng)SPL語句使用call?dfx或dfx時,會先使用本地計算,如未計算成功則會進(jìn)行遠(yuǎn)程計算??????con=?DriverManager.getConnection("jdbc:esproc:local://?onlyServer=true");??
????//直接執(zhí)行SPL語句,返回結(jié)果集??????st?=?(PreparedStatement)con.createStatement();??
????ResultSet?rs?=?st.executeQuery("$select?*?from?employee.txt");??
?????
????//簡單處理結(jié)果集,將結(jié)果集中的字段名與數(shù)據(jù)輸出???????ResultSetMetaData?rsmd?=?rs.getMetaData();??
????int?colCount?=?rsmd.getColumnCount();??
????for?(?int??c?=?1;?c?<=?colCount;c++)?{??
????String?title?=?rsmd.getColumnName(c);??
????if(?c?>?1?)?{??
????????System.out.print("\t");??
????}??
????else?{??
????????System.out.print("\n");??
????}??
????????System.out.print(title);??
??}??
????while?(rs.next())?{??
?????for(int?c?=?1;?c<=?colCount;?c++)?{??
???????if?(?c?>?1?)?{??
????????????System.out.print("\t");??
??}??
???????else?{??
????????????System.out.print("\n");??
??}??
?????Object?o?=?rs.getObject(c);??
?????System.out.print(o.toString());??
??}??
??}??
???//關(guān)閉連接?????if?(con!=null)?{??
????????con.close();??
???}??
}

執(zhí)行結(jié)果:

Java 如何遠(yuǎn)程調(diào)用 SPL 腳本

總結(jié)

通過上面的使用,相信您已經(jīng)了解遠(yuǎn)程訪問服務(wù)器的部署核心了吧,沒錯!Java 程序中調(diào)用服務(wù)器上的運(yùn)算與調(diào)用本地的 SPL 運(yùn)算操作步驟其實(shí)大體相同,總結(jié)下主要有如下三點(diǎn)區(qū)別:

1,部署服務(wù)器

2,JDBC 的 raqsoftConfig.xml 中添加服務(wù)器地址

3,在 JDBC 的 url 中添加 onlyServer 屬性,屬性值為 true,始終訪問服務(wù)器進(jìn)行遠(yuǎn)程計算;屬性值為 false,進(jìn)行本地計算,但當(dāng) SPL 語句為 call dfx 或 dfx 時,會先在本地計算,如未計算成功則會進(jìn)行遠(yuǎn)程計算

到此,對于遠(yuǎn)程調(diào)用 SPL 腳本的介紹就完了,Java 中調(diào)用時更多 SPL 的用法可參見《Java 如何調(diào)用 SPL 腳本》這里就不再贅述了,當(dāng)然,想要更深入的學(xué)習(xí) SPL 的小伙伴兒還可以去官網(wǎng)上的在線教程中查看。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:Java如何遠(yuǎn)程調(diào)用SPL腳本-創(chuàng)新互聯(lián)
鏈接地址:http://www.muchs.cn/article22/depejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、云服務(wù)器、企業(yè)網(wǎng)站制作網(wǎng)站營銷、建站公司、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)