JAVA hbase groupby_Spark 读取Hbase表数据并实现类似groupByKey操作

一、概述程序运行环境很重要,本次测试基于:hadoop-2.6.5spark-1.6.2hbase-1.2.4zookeeper-3.4.6jdk-1.8废话不多说了,直接上需求

Andy column=baseINFO:age,value=21

Andy column=baseINFO:gender,value=0

Andy column=baseINFO:telphone_number,value=110110110

Tom  column=baseINFO:age,value=18

Tom  column=baseINFO:gender,value=1

Tom  column=baseINFO:telphone_number,value=120120120

如上表所示,将之用spark进行分组,达到这样的效果:

[Andy,(21,0,110110110)]

[Tom,(18,1,120120120)]

需求比较简单,主要是熟悉一下程序运行过程

二、具体代码

package com.union.bigdata.spark.hbase;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.mapreduce.TableSplit;import org.apache.hadoop.hbase.util.Base64;import org.apache.hadoop.hbase.util.Bytes;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.SparkConf;import org.apache.spark.api.java.function.Function;import org.apache.spark.api.java.function.Function2;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.client.Scan;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.io.ImmutableBytes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先需要明确一下酒店推荐系统的具体需求和算法模型。在此假设推荐系统采用协同过滤算法,即根据用户历史行为和其他用户的行为数据,推荐给用户可能感兴趣的酒店。 接下来,我们可以按照以下步骤来实现: 1. 从Hbase读取酒店和用户行为数据,使用Spark SQL进行数据清洗和预处理。 2. 使用协同过滤算法,计算用户之间的相似度,得到用户相似度矩阵。 3. 对于每个用户,根据相似度矩阵和用户历史行为,推荐可能感兴趣的酒店列。 4. 将推荐结果存储到Hbase中,以备后续查询。 以下是一份简单的代码示例: ```python from pyspark.sql import SparkSession # 创建SparkSession对象 spark = SparkSession.builder.appName("HotelRecommendationSystem").getOrCreate() # 从Hbase读取酒店和用户行为数据 hotel_data = spark.read.format("org.apache.hadoop.hbase.spark") \ .option("hbase.table", "hotel_table") \ .option("hbase.columns.mapping", "hotel_id STRING :key, hotel_name STRING info:hotel_name") \ .load() user_data = spark.read.format("org.apache.hadoop.hbase.spark") \ .option("hbase.table", "user_table") \ .option("hbase.columns.mapping", "user_id STRING :key, hotel_id STRING info:hotel_id") \ .load() # 数据清洗和预处理 hotel_data = hotel_data.selectExpr("hotel_id", "hotel_name") user_data = user_data.groupBy("user_id").agg(collect_list("hotel_id").alias("hotel_ids")) # 使用协同过滤算法,计算用户相似度矩阵 user_similarity = ... # 对于每个用户,根据相似度矩阵和用户历史行为,推荐可能感兴趣的酒店列 user_recommendations = ... # 将推荐结果存储到Hbase中 user_recommendations.write.format("org.apache.hadoop.hbase.spark") \ .option("hbase.table", "recommendation_table") \ .option("hbase.columns.mapping", "user_id STRING :key, hotel_ids STRING info:hotel_ids") \ .save() # 关闭SparkSession对象 spark.stop() ``` 需要注意的是,上述代码中的`user_similarity`和`user_recommendations`需要根据具体的算法模型进行实现。另外,还需要根据实际情况进行调整,如更改Hbase的名称和列族,以及更改数据预处理和推荐算法的参数等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值