基于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的任务。
- 点赞
- 收藏
- 关注作者
评论(0)