91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java 如何遠程調用 SPL 腳本

發布時間:2020-07-04 14:37:12 來源:網絡 閱讀:292 作者:raqsoft 欄目:大數據

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

實現思路通過下圖一目了然:

Java 如何遠程調用 SPL 腳本

部署服務器

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

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

1. 服務器配置

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

Java 如何遠程調用 SPL 腳本

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

Java 如何遠程調用 SPL 腳本

在頁面中,可以配置授權文件、主路徑、尋址路徑、日期時間格式、默認字符編碼、日志等級、文件緩存區字節數等信息。

下面我們繼續來了解服務器的配置,在右側的菜單欄中點擊 Config,可以配置分機的相關信息,點擊后在 Unit 頁面中可以配置分機信息,如下:

Java 如何遠程調用 SPL 腳本

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

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

分機配置中,Max task number 是該分機允許執行的最大作業數,而 Preferred task number 是該分機的適合作業數,當分機中使用了多個進程時,適合作業數就是分進程的總數。在 Partitions 一欄中,可以選擇每個分機上所使用的分區。

服務器的 Enable clients 頁面中可以設定客戶端白名單,如下:

Java 如何遠程調用 SPL 腳本

選定 Check clients 后,可以在 Clients hosts 列表中,設定允許調用服務器的 IP 地址白名單,不在設定范圍中的 IP 地址將無法調用服務器執行計算。

服務器設定完成后,點擊 OK,此時可以自動設定對應的配置文件 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. 運行服務器

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

Java 如何遠程調用 SPL 腳本

在分機啟動時,設置的各個進程會同時啟動,可以點擊 Main 查看分機主進程的執行情況,或者點擊對應的端口號查看分機的其它分進程執行頁面。

在 Linux 系統中,可以運行 ServerConsole.sh 來啟動服務器類:

Java 如何遠程調用 SPL 腳本

打開的分機運行窗口和在 Windows 下是相同的:

Java 如何遠程調用 SPL 腳本

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

Java 如何遠程調用 SPL 腳本

部署集算器 JDBC

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

1. 加載驅動 jar

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

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

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

icu4j_3_4_5.jar?//處理國際化

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

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

比如數據庫作為數據源,那么還需要相應數據庫的驅動 jar 包;
要讀寫 Office 文件,則需要加入 poi*.jar 和 xmlbeans.jar; 要使用繪制圖形功能,則需要加入 SVG 圖形處理相關的 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 下找到,需復制后放置在應用項目的類路徑下,配置文件的名稱不可改變。

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

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

Java 調用

接下來我們以訪問服務器上的數據文件為例,介紹如何在 Java 中遠程訪問服務器。

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

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

在 raqsoftConfig.xml 文件的節點中添加以下節點:

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

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

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

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

public??void?runSPL()?throws?ClassNotFoundException,?SQLException{??
????Connection?con?=?null;??
????PreparedStatement?st;??
????ResultSet?set?;??
????//建立連接??
????Class.forName("com.esproc.jdbc.InternalDriver");??
//onlyServer用于控制當前jdbc是否對服務器進行遠程計算,為true表示遠程計算;false時表示本地計算??
//注意:屬性值為false,當SPL語句使用call?dfx或dfx時,會先使用本地計算,如未計算成功則會進行遠程計算??
????con=?DriverManager.getConnection("jdbc:esproc:local://?onlyServer=true");??
????//直接執行SPL語句,返回結果集??
????st?=?(PreparedStatement)con.createStatement();??
????ResultSet?rs?=?st.executeQuery("$select?*?from?employee.txt");??
?????
????//簡單處理結果集,將結果集中的字段名與數據輸出???
????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());??
??}??
??}??
???//關閉連接??
???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用于控制當前jdbc是否對服務器進行遠程計算,為true表示遠程計算;false時表示本地計算??//注意:屬性值為false,當SPL語句使用call?dfx或dfx時,會先使用本地計算,如未計算成功則會進行遠程計算??????con=?DriverManager.getConnection("jdbc:esproc:local://?onlyServer=true");??
????//直接執行SPL語句,返回結果集??????st?=?(PreparedStatement)con.createStatement();??
????ResultSet?rs?=?st.executeQuery("$select?*?from?employee.txt");??
?????
????//簡單處理結果集,將結果集中的字段名與數據輸出???????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());??
??}??
??}??
???//關閉連接?????if?(con!=null)?{??
????????con.close();??
???}??
}

執行結果:

Java 如何遠程調用 SPL 腳本

總結

通過上面的使用,相信您已經了解遠程訪問服務器的部署核心了吧,沒錯!Java 程序中調用服務器上的運算與調用本地的 SPL 運算操作步驟其實大體相同,總結下主要有如下三點區別:

1,部署服務器

2,JDBC 的 raqsoftConfig.xml 中添加服務器地址

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

到此,對于遠程調用 SPL 腳本的介紹就完了,Java 中調用時更多 SPL 的用法可參見《Java 如何調用 SPL 腳本》這里就不再贅述了,當然,想要更深入的學習 SPL 的小伙伴兒還可以去官網上的在線教程中查看。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

农安县| 吐鲁番市| 屏东县| 潍坊市| 施甸县| 彭州市| 宜宾县| 伊春市| 甘谷县| 海丰县| 嘉定区| 淳化县| 抚顺县| 惠来县| 安西县| 辽源市| 南平市| 连州市| 邮箱| 偏关县| 云浮市| 浪卡子县| 常德市| 中方县| 深圳市| 修文县| 江陵县| 黔江区| 上蔡县| 绥芬河市| 北宁市| 化隆| 沙坪坝区| 东安县| 临朐县| 吴江市| 常熟市| 青海省| 将乐县| 修文县| 乐安县|