从外部 Kafka 接入数据的方案

最后更新于:2018-03-13 12:44:26

本文档所描述的内容属于神策分析 ( Sensors Analytics ) 的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询您的数据咨询顾问获取一对一的协助。

1. 概述

Sensors Analytics 数据接入一般使用各语言的 SDK 或我们提供的批量或流式数据导入工具来完成。

在一些特殊情况下,我们提供从外部 Kafka 接入数据,若使用这种方式,请先确认以下几点:

  1. 从外部 Kafka 接入数据与使用数据接入 API 接入(直接使用 SDK 发送或使用 LogAgent)的方式冲突,只能选择一种;
  2. 对接的外部 Kafka 版本需要是 0.8.2.x;
  3. 接入数据的 topic 只能有 1 个 partition;
  4. 接入数据的 topic 中的数据需要符合我们提供的格式,具体格式在下面会介绍;
  5. 不支持接入多个 topic ,不支持更改 topic。

使用这种方式需要联系值班同学手工配置接入参数,需要提供的内容包括:

  1. 接入数据的 Kafka 的 zookeeper 地址和端口号;
  2. 接入数据的 Kafka 所有 broker 的地址和端口号;
  3. 接入数据的 topic 名称;

更改接入方式后,将从 topic 最新进度开始读取数据,之前的数据请使用其他方式导入如批量导入工具。

2. 数据格式

一条数据样例格式化后如下:

{
    "content":{
        "distinct_id":"2b0a6f51a3cd6775",
        "time":1469421930554,
        "type":"track",
        "event":"ViewProduct",
        "properties":{
            "$manufacturer":"Apple",
            "$model":"iPhone 5",
            "$os":"iOS",
            "$os_version":"7.0",
            "$app_version":"1.3",
            "$wifi":true,
            "$ip":"180.79.35.65",
            "$province":"湖南",
            "$city":"长沙",
            "$screen_width":320,
            "$screen_height":640,
            "product_id":12345,
            "product_name":"苹果",
            "product_classify":"水果",
            "product_price":14
        }
    },
    "nginx_time":1469421931554,
    "project":"test_project"
}

各字段说明如下:

  • content:必须字段,数据内容。该字段内容的格式请参考 数据格式
  • nginx_time:必须字段,向 Kafka 中发送数据时的 Unix 时间戳,精确到毫秒;
  • project:可选字段,这条数据所导入的项目。若 content 中也有 project 字段,以 content 中的为准。

注意:每条数据作为一条 Kafka Message;