大数据技术_ 基础理论 之 数据采集与预处理

2.1 大数据采集架构

2.1.1概述

如今,社会中各个机构、部门、公司、团体等正在实时不断地产生大量的信息,这些信息需要以简单的方式进行处理,同时又要十分准确且能迅速满足各种类型的数据(信息)需求者。这给我们带来了许多挑战,第一个挑战就是在大量的数据中收集需要的数据,下面介绍常用的大数据采集工具。

2.1.2 常用大数据采集工具

数据采集最传统的方式是企业自己的生产系统产生的数据,除上述生产系统中的数据外,企业的信息系统还充斥着大量的用户行为数据、日志式的活动数据、事件信息等,越来越多的企业通过架设日志采集系统来保存这些数据,希望通过这些数据获取其商业或社会价值。
在这里插入图片描述

在这里插入图片描述

2.1.3 Apache Kafka数据采集

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
6、使用Java来编写Kafka的实例

首先,编写KafkaProducer.properties文件:

zk.connect            = localhost:2181
broker.list           = localhost:9092
serializer.class      = kafka.serializer.StringEncoder
request.required.acks = 1

下面的代码是使用Java编写了一个Kafka消息发布者:

import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;
public class MyKafkaProducer {
    private Producer<String, String> producer;
    private final String topic;
    public MyKafkaProducer(String topic) throws Exception {
        InputStream in = Properties.class.
                getResourceAsStream("KafkaProducer.properties");
        Properties props = new Properties();
        props.load(in);
        ProducerConfig config = new ProducerConfig(props);
        producer = new Producer<String, String>(config);
    }
    public void sendMessage(String msg){
        KeyedMessage<String, String> data =
                new KeyedMessage<String, String>( topic, msg);
        producer.send(data);
        producer.close();
    }
    public static void main(String[] args) throws Exception{
        MyKafkaProducer producer = new MyKafkaProducer("HelloTopic");
        String msg = "Hello Kafka!";
        producer. sendMessage(msg);
    }
}

下面创建Comsumer,首先编写KafkaProperties文件:

zk.connect                   = localhost:2181
group.id                     = testgroup
zookeeper.session.timeout.ms = 500
zookeeper.sync.time.ms       = 250
auto.commit.interval.ms      = 1000

上述参数配置,十分容易理解,具体的详细说明,可以参考Kafka的官方文档。下面的代码是使用Java编写了一个Kafka的Comsumer。

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import kafka.consumer.ConsumerConfig;
import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;
import kafka.javaapi.consumer.ConsumerConnector;
import kafka.consumer.Consumer;
 
public class MyKafkaConsumer {
    private final ConsumerConnector consumer;
    private final String topic;
    public MyKafkaConsumer(String topic) throws Exception{
        InputStream in = Properties.class.
                getResourceAsStream("KafkaProducer.properties");
        Properties props = new Properties();
        props.load(in);
        ConsumerConfig config = new ConsumerConfig(props);
        consumer = Consumer.createJavaConsumerConnector(config);
        this.topic = topic;
    }
    public void consumeMessage() {
        Map<String, String> topicMap = new HashMap<String, String>();
        topicMap.put(topic, new Integer(1));
        Map<String, List<KafkaStream<byte[], byte[]>>> consumerStreamsMap =
                consumer.createMessageStreams(topicMap);
        List<KafkaStream<byte[], byte[]>> streamList =
                consumerStreamsMap.get(topic);
        for (final KafkaStream<byte[], byte[]> stream : streamList) {
            ConsumerIterator<byte[], byte[]> consumerIte =
                    stream.iterator();
            while (consumerIte.hasNext())
                System.out.println("message :: "
                        + new String(consumerIte.next().message()));
        }
        if (consumer != null)
            consumer.shutdown();
    }
    public static void main(String[] args) throws Exception{
        String groupId = "testgroup";
        String topic = "HelloTopic";
        MyKafkaConsumer consumer = new MyKafkaConsumer(topic);
        consumer.consumeMessage();
    }
}


2.2 数据预处理原理

通过数据预处理工作,可以使残缺的数据完整,并将错误的数据纠正、多余的数据去除,进而将所需的数据挑选出来,并且进行数据集成。数据预处理的常见方法有数据清洗、数据集成与数据变换。

2.2.1 数据清洗
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.2.2 数据集成
在这里插入图片描述
2.2.3 数据变换
在这里插入图片描述

2.3 数据仓库与ETL工具

2.3.1 数据仓库与ETL工具

数据仓库,是在企业管理和决策中面向主题的、集成的、随时间变化的、非易失性数据的集合。

数据仓库中的数据来自于多种业务数据源,这些数据源可能处于不同硬件平台上,使用不同的操作系统,数据模型也相差很远。如何获取并向数据仓库加载这些数据量大、种类多的数据,已成为建立数据仓库所面临的一个关键问题。

2.3.2 常用ETL工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.3.3 案例:Kettle数据迁移

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值