基于FusionInsight离线数仓场景案例

网友投稿 617 2022-05-30

一、场景方案

离线处理通常是指对海量数据进分析和处理,形成结果数据,供下一步数据应用使用。离线处理对处理时间要求不高,但是所处理数据量较大,占用计算存储资源较多。通常通过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指定任务运行的入口类

基于FusionInsight的离线数仓场景案例

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小时内删除侵权内容。

上一篇:网站开发进阶(六十六)CSS3 - 新单位vmin/vmax与旧单位ex/ch使用详解
下一篇:推荐学Java——初识数据库
相关文章