最全大数据开发项目-电信项目2-传输数据(4),2024年最新让你明明白白的使用RecyclerView

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

/root/soft/apache-flume-1.6.0-bin/bin/flume-ng agent --conf /root/soft/apache-flume-1.6.0-bin/conf/ --name a1 --conf-file /root/soft/apache-flume-1.6.0-bin/conf/flume-kafka.conf

2.4生产数据

2.4.1 运行脚本

sh produceData.sh

sh脚本文件

[root@hou-01 jars]# cat produceData.sh

#!/bin/bash

java -cp /root/jars/ct_producer-1.0-SNAPSHOT.jar producer.ProductLog /root/jars/calllog.csv

3 数据消费环境准备

写api用habse接收kafka的数据

3.1添加maven配置

查看自己kafka版本,下载对应配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.10是scala版本 0.8.1.1是kafka版本

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

Telecom

com.itstar

1.0-SNAPSHOT

4.0.0

ct_consumer

junit

junit

4.12

test

org.apache.kafka

kafka-clients

0.8.1.1

org.apache.hbase

hbase-client

1.3.0

org.apache.hbase

hbase-server

1.3.0

org.apache.kafka

kafka-clients

0.8.1.1

org.apache.maven.plugins

maven-surefire-plugin

2.12.4

true

3.2添加maven配置

3.2.1

hadoop/etc/hadoop/core-site.xml

hadoop/etc/hadoop/hdfs-site.xml

habse/conf/habase-site.xml

habse/conf/log4j.properties

3.2.2

在windows下,修改主机映射hosts

C:\Windows\System32\drivers\etc\hosts

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.2.3 新建habse_consumer.properties

内容如下

设置kafka的# 设置kafka的brokerlist

bootstrap.servers=bigdata11:9092,bigdata12:9092,bigdata13:9092

设置消费者所属的消费组

group.id=hbase_consumer_group

设置是否自动确认offset

enable.auto.commit=true

自动确认offset的时间间隔

auto.commit.interval.ms=30000

设置key,value的反序列化类的全名

key.deserializer=org.apache.kafka.common.serialization.StringDeserializer

value.deserializer=org.apache.kafka.common.serialization.StringDeserializer

以下为自定义属性设置

设置本次消费的主题

kafka.topics=calllog

设置HBase的一些变量

hbase.calllog.regions=6

hbase.calllog.namespace=ns_ct

hbase.calllog.tablename=ns_ct:calllog

4 消费数据工具类

4.1 PropertiesUtil代码来调用配置的参数

package utils;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

//调用文件里的参数

public class PropertiesUtil {

public static Properties properties = null;

static {

//获取配置文件,方便维护

InputStream is = ClassLoader.getSystemResourceAsStream(“hbase_consumer.properties”);

properties = new Properties();

try {

properties.load(is);

} catch (IOException e) {

e.printStackTrace();

}

}

/*

获取参数值使用

@param:key 名字

@return: 参数值

*/

public static String getProperty(String key){

return properties.getProperty(key);

}

}

4.2 ConnectionInstance实例化一个连接对象

package utils;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.client.Connection;

import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;

public class ConnectionInstance {

private static Connection conn;

public static synchronized Connection getConnection(Configuration configuration){

try {

if (conn == null || conn.isClosed()){

conn = ConnectionFactory.createConnection(configuration);

}

} catch (IOException e) {

e.printStackTrace();

}

return conn;

}

}

5.kafkaAPI消费数据

5.1本地kafkaAPI接收集群上生产的数据

package kafka;

import org.apache.kafka.clients.consumer.ConsumerRecord;

import org.apache.kafka.clients.consumer.ConsumerRecords;

import org.apache.kafka.clients.consumer.KafkaConsumer;

import utils.PropertiesUtil;

import java.util.Arrays;

public class HBaseConsumer {

public static void main(String[] args) {

KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(PropertiesUtil.properties);

kafkaConsumer.subscribe(Arrays.asList(PropertiesUtil.getProperty(“kafka.topics”)));

while(true) {

ConsumerRecords<String, String> records = kafkaConsumer.poll(100);

for (ConsumerRecord<String, String> cr : records) {

String orivalue = cr.value();

System.out.println(orivalue);

}

}

}

}

6.将kafka的数据保存到hbase

6.1HBaseUtil的命名空间
6.2判断表和创建表
6.3写分区键

package utils;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.NamespaceDescriptor;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.client.Admin;

import org.apache.hadoop.hbase.client.Connection;

import org.apache.hadoop.hbase.client.ConnectionFactory;

import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

import java.text.DecimalFormat;

import java.util.Iterator;

import java.util.TreeSet;

/**

  • 1.namespace ====》 命名空间

  • 2.createTable ====》 表

  • 3.isTable ====》 判断表是否存在

  • 4.Regin、RowKey、分区键

*/

public class HbaseUtil {

/**

*初始化命名空间

  • @param conf 配置对象

  • @param namespace 命名空间的名字

  • @throws Exception

*/

public static void initNameSpace(Configuration conf, String namespace) throws Exception {

Connection connection = ConnectionFactory.createConnection(conf);

Admin admin = connection.getAdmin();

//命名空间描述器

NamespaceDescriptor nd = NamespaceDescriptor

.create(namespace)

.addConfiguration(“AUTHOR”, “Yuwen”)

.build();

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

on {

Connection connection = ConnectionFactory.createConnection(conf);

Admin admin = connection.getAdmin();

//命名空间描述器

NamespaceDescriptor nd = NamespaceDescriptor

.create(namespace)

.addConfiguration(“AUTHOR”, “Yuwen”)

.build();

[外链图片转存中…(img-WSygQdGt-1715803928545)]
[外链图片转存中…(img-SAgHVouh-1715803928545)]
[外链图片转存中…(img-JybCoHnL-1715803928546)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值