Leo Yeh's Blog

SAS Viya (129)

教學目標

初步了解如何設定 Apache Spark 叢集為 SAS Viya 分析平台中的 CAS 資料館進行整合應用。

重點概念

首先 Apache Spark 主要提供在 Hadoop 中執行分散式作業的方式之一,其目標主要是保持 MapReduce 可擴展,分散式和容錯處理框架的好處,同時在記憶體中進行更高效的運算處理,以及主要是一個分散式通用叢集運算架構,至於架構基礎主要是彈性分佈式資料集 (Resilient Distributed Dataset,RDD),其是一個只讀的多重集合資料項分散在一組機器上進行維護和實作容錯,並且主要針對 MapReduce 限制而開發作為分散式程式的工作集,提供分散式共享記憶體,以利用於特定分散式資料結構和串流資料結構。此外 在 SAS Viya 分析平台中,我們主要能夠透過 SAS/ACCESS Interface to Hadoop 和 SAS/ACCESS Interface to Spark 工具建立 CAS 資料館存取至 Spark 分散式通用叢集運算架構中的資料。

接著當我們要使用 SAS/ACCESS Interface to Hadoop 和 SAS/ACCESS Interface to Spark 工具之前,必須先在設定檔中設定 JAVA_HOME 和 LD_LIBRARY 環境變數,詳細資訊請參考官方文件

編輯設定檔

1
2
3
vi /opt/sas/viya/config/etc/cas/default/cas_usermods.settings
vi /opt/sas/viya/config/etc/workspaceserver/default/workspaceserver_usermods.sh
vi /opt/sas/viya/config/etc/sysconfig/compsrv/default/sas-compsrv

設定環境變數

1
2
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/lib/amd64/server

重新啟動服務

1
2
3
4
5
6
systemctl stop sas-viya-cascontroller-default
systemctl start sas-viya-cascontroller-default
systemctl status sas-viya-cascontroller-default
systemctl stop sas-viya-compute-default
systemctl start sas-viya-compute-default
systemctl status sas-viya-compute-default

若沒有設定環境變數的錯誤資訊

1
2
3
ERROR: The connection to the data source driver failed.
ERROR: No diagnostic records were returned.
ERROR: Function failed.

當編輯設定檔完成之後,我們則必須從 Spark 的環境中複製相關的設定檔和函式庫檔案至 SAS Viya 分析平台中,若以 Google Dataproc 雲端服務為例,我們能夠從「/etc/hadoop/conf」中取得設定檔,以及從「/usr/lib/hadoop」和「 /usr/lib/hadoop/lib」取得 Hadoop 相關函式庫,並且複製至 SAS Viya 分析平台中的「/dataproc/hadoop/lib」目錄中,以及從「/usr/lib/spark/jars」取得 Spark 相關函式庫,並且複製至 SAS Viya 分析平台中的「/dataproc/hadoop/lib/spark」目錄中。

再來我們就能夠登入 SAS Viya 分析平台中的 SAS Environment Manager 應用程式,點選「資料」->「資料來源」,並且點選「cas-shared-default」的資料來源,然後按下上方「連接」鈕,此時會開啟連線設定畫面,我們將會輸入以下表格中 CAS 資料館的基本資訊。

項目 設定值
名稱 SPARK
伺服器 cas-shared-default
類型 其他
來源類型 hadoop

當設定完成 CAS 資料館的基本資訊之後,請點選「進階」頁籤,以利指定進階連線資訊,請先設定「資料傳輸模式」為「序列」,再設定「其它參數」,請注意若要成功建立 Spark 的 CAS 資料館,請務必確認參數設定是否正確,請參下表。

參數 設定值
server [Dataproc 叢集的完整電腦名稱]
username hive
schema default
hadoopjarpath /dataproc/hadoop/lib:/dataproc/hadoop/lib/spark
hadoopconfigdir /dataproc/hadoop/conf
platform spark
properties hive.execution.engine=SPARK

最後當我們設定完成 CAS 資料館之後,請按下「測試連線」鈕之後,若是正常連線至 Apache Spark 叢集作為 CAS 資料館時,則會顯示「連線成功」,反之沒有正常連線,則會顯示「測試連線時發生問題: XXX」,此時我們能夠點選「檢視詳細資料」查看錯誤可能的原因資訊。此外我們更能夠開啟 SAS Studio V 撰寫以下 SAS 程式碼測試連線至 Apache Spark 叢集作為 CAS 資料館是否正常,詳細資訊請參考官方文件

1
2
3
4
5
6
7
8
9
cas mysession;
caslib splib sessref=mysession datasource=(srctype="hadoop", dataTransferMode="auto",username="hive", server="[Dataproc 叢集的完整電腦名稱]",
hadoopjarpath="/dataproc/hadoop/lib:/dataproc/hadoop/lib/spark",
hadoopconfigdir="/dataproc/hadoop/conf", schema="default"
platform="spark"
properties="hive.execution.engine=SPARK");
proc casutil;
list files incaslib="splib";
run;

總結我們能夠透過 SAS/ACCESS Interface to Hadoop 和 SAS/ACCESS Interface to Spark 工具設定用於直接存取 Apache Spark 叢集中資料的 CAS 資料館,此時我們就能夠搭配 SAS Data Studio 準備資料和 SAS Visual Analytics 設計報表。

相關資源

⬅️ Go back