基于FusionInsight的離線數倉場景案例
一、場景方案
離線處理通常是指對海量數據進分析和處理,形成結果數據,供下一步數據應用使用。離線處理對處理時間要求不高,但是所處理數據量較大,占用計算存儲資源較多。通常通過Hive/SparkSQL引擎或者MapReduce/Spark實現。
離線處理場景,通常需要部署HDFS、Yarn、Spark2x、Hive、MapReduce、Tez等組件,如下圖所示:
二、樣例場景:營銷推廣分析
數據采集可以采用多種方式,本樣例中假定數據已經提取為普通文本文件,獲取到的樣例數據:如下3個text文件
1)???????? 用戶信息 userTable.txt 對應字段含義 :
用戶ID、用戶名、用戶注冊時間
2)???????? 購物數據 shoppingTable.txt 對應字段含義:
用戶ID、商品名稱、商品類型、花費金額、購買時間
3)???????? 用戶瀏覽記錄表:
用戶ID、商品名稱、瀏覽時長、瀏覽日期
目標要分析出如下數據
1.???????? 金牌用戶名單:
規則:累計消費金額大于10000的用戶,消費記錄以2018-01-01之后為準
輸出:goldinfo表,表字段:用戶ID、用戶名、累計消費金額
2.???????? 優惠券推送信息:
規則:對半年內消費金額小于1000的用戶,發放金額為其消費金額20%的優惠券,不足10元的給與10元優惠券
輸出:discountInfo表,表字段:用戶ID、用戶名、消費金額、優惠券金額
3.???????? 廣告推送信息:
規則:針對瀏覽次數大于10次卻還沒有購買的用戶,發送廣告推送
輸出:SpreadInfo表,表字段:用戶ID、用戶名稱、商品名稱
三、開發環境
系統類型
Windows 10 64bit
JDK版本
Oracle JDK 1.8
開發工具
Intellij IDEA 2019.2.3
Scala SDK
2.11.12
FusionInsight HD環境
安全模式
安裝組件:HDFS、Yarn、Hive、Spark2X
四、代碼說明
詳細代碼參考附件
本場景提供兩個測試模塊,完成功能一樣,其中offineProcessingJava使用java語言開發,offineProcessingScala使用scala語言開發,其中scala語言模塊提交測試方案類似java,可參考java使用。
五、本地測試
本地測試請使用OfflineProcessingJava模塊中的如下方法執行
com.huawei.bigdata.spark.examples.SparkLocalTest
執行之前配置步驟如下,默認提到的調用方法都在SparkLocalTest類中:
1)???????? 將offineProcessingJava\data目錄下的三個txt文件上傳到hdfs的/myfile/下;
2)???????? 使用開發工具IntelliJ IDEA導入OfflineProcessingJava該模塊;
3)???????? 參考產品文檔配置maven源,確保pom.xml中指定的依賴包為從華為MRS提供的maven倉下載;
4)???????? 安裝FI集群客戶端,使用認證用戶登錄spark-beeline,檢查是否有表名為“goldinf”、“spreadinfo”、“discountinfo”的表,如有,則刪除;
5)???????? 從FI集群的Manager頁面獲取用于測試的用戶認證憑據,示例中使用的是developuser用戶,請根據實際情況修改為自己的用戶名,將下載獲取的user.keytab和krb5.conf文件替換到offineProcessingJava\src\main\resources目錄下;
6)???????? 更改UserLogin方法中的String PRNCIPAL_NAME的值為本次測試使用的用戶名;
7)???????? 從FI集群客戶端的類似如下目錄/opt/client/HDFS/hadoop/etc/hadoop下載core-site.xml和hdfs-site.xml文件替換到offineProcessingJava\src\main\resources目錄下;
8)???????? 從FI客戶端的類似如下目錄/opt/client/Spark2x/spark/conf下載hive-site.xml文件替換到offineProcessingJava\src\main\resources目錄下;
六、集群部署測試
6.1 執行前配置
1)???????? 將offineProcessingJava\data目錄下的三個txt文件上傳到hdfs的/myfile/下;
2)???????? 使用開發工具IntelliJ IDEA導入OfflineProcessingJava該模塊;
3)???????? 參考產品文檔配置maven源,確保pom.xml中指定的依賴包為從華為MRS提供的maven倉下載;
4)???????? 安裝FI集群客戶端,使用認證用戶登錄spark-beeline,檢查是否有表名為“goldinf”、“spreadinfo”、“discountinfo”的表,如有,則刪除;
5)???????? 從FI集群客戶端的類似如下目錄/opt/client/HDFS/hadoop/etc/hadoop下載core-site.xml和hdfs-site.xml文件替換到offineProcessingJava\src\main\resources目錄下;
6)???????? 從FI客戶端的類似如下目錄/opt/client/Spark2x/spark/conf下載hive-site.xml文件替換到offineProcessingJava\src\main\resources目錄下;
7)???????? 點擊IDEA工具右側maven工具,忽略test部分,使用package執行打包,獲取offineProcessingJava-1.0-SNAPSHOT.jar;
8)???????? 將該jar包上傳到FI客戶端所在節點,例如放在目錄/opt下
6.2 提交job到集群
1)???????? 登錄FI客戶端,執行kinit安全認證;
2)???????? 通過類似如下命令提交spark任務,其中
--class指定任務運行的入口類
spark-submit --class com.huawei.bigdata.spark.examples.SparkSQLDemo ? --master yarn --deploy-mode client /opt/offineProcessingJava-1.0-SNAPSHOT.jar
3)???????? 使用spark-beeline查看已經創建出表“goldinf”、“spreadinfo”、“discountinfo”
4)???????? 登錄Yarn的ResoureManger WEBUI可查看已完成的任務中有名為OfflineProcessing的任務。
附件: OfflineProcessing.zip 2.41MB 下載次數:1次
EI企業智能 FusionInsight
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。