场景说明
场景说明
假定Hive的person表存储用户当天消费的金额信息,HBase的table2表存储用户历史消费的金额信息。
现person表有记录name=1,account=100,表示用户1在当天消费金额为100元。
table2表有记录key=1,cf:cid=1000,表示用户1的历史消息记录金额为1000元。
基于某些业务要求,要求开发Spark应用程序实现如下功能:
根据用户名累计用户的历史消费金额,即用户总消费金额=100(用户当天的消费金额) + 1000(用户历史消费金额)。
上例所示,运行结果table2表用户key=1的总消费金额为cf:cid=1100元。
数据规划
在开始开发应用前,需要创建Hive表,命名为person,并插入数据。同时,创建HBase table2表,用于将分析后的数据写入。
- 将原日志文件放置到HDFS系统中。
- 在本地新建一个空白的log1.txt文件,并在文件内写入如下内容。
1,100
- 在HDFS中新建一个目录/tmp/input,并将log1.txt文件上传至此目录。
- 在本地新建一个空白的log1.txt文件,并在文件内写入如下内容。
- 将导入的数据放置在Hive表里。
首先,确保ThriftServer已启动。然后使用Beeline工具,创建Hive表,并插入数据。
- 创建HBase表。
- 通过HBase创建名为table2的表,命令如下。
- 通过HBase插入数据,执行如下命令。
如果开启了kerberos认证,需要将客户端的配置文件“spark-default.conf”和sparkJDBC服务端中的配置项spark.yarn.security.credentials.hbase.enabled置为true。
开发思路
- 查询Hive person表的数据。
- 根据person表数据的key值去table2表做查询。
- 把前两步相应的数据记录做相加操作。
- 把上一步骤的结果写到table2表。