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

举报
suwei 发表于 2020/09/27 20:09:51 2020/09/27
【摘要】 本文给出基于FusionInsight做离线数仓分析的案例

一、场景方案

离线处理通常是指对海量数据进分析和处理,形成结果数据,供下一步数据应用使用。离线处理对处理时间要求不高,但是所处理数据量较大,占用计算存储资源较多。通常通过Hive/SparkSQL引擎或者MapReduce/Spark实现。

离线处理场景,通常需要部署HDFSYarnSpark2xHiveMapReduceTez等组件,如下图所示:

image.png

二、样例场景:营销推广分析

数据采集可以采用多种方式,本样例中假定数据已经提取为普通文本文件,获取到的样例数据:如下3text文件

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环境

安全模式

安装组件:HDFSYarnHiveSpark2X

image.png

image.png

四、代码说明

     详细代码参考附件

本场景提供两个测试模块,完成功能一样,其中offineProcessingJava使用java语言开发,offineProcessingScala使用scala语言开发,其中scala语言模块提交测试方案类似java,可参考java使用。

image.png


五、本地测试

本地测试请使用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.keytabkrb5.conf文件替换到offineProcessingJava\src\main\resources目录下;

6)         更改UserLogin方法中的String PRNCIPAL_NAME的值为本次测试使用的用户名;

7)         FI集群客户端的类似如下目录/opt/client/HDFS/hadoop/etc/hadoop下载core-site.xmlhdfs-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.xmlhdfs-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)         登录YarnResoureManger WEBUI可查看已完成的任务中有名为OfflineProcessing的任务。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。