精华内容
下载资源
问答
  • 本规范适用于危险化学品重大危险源罐区、重点监管危险化工工艺装置、厂区可燃/有毒气体泄漏等重要基础数据、安全参数、报警数据、视频监控等感知数据接入。未构成危险化学品重大危险源的安全设施感知数据接入可参照...
  • 主要搜集了,网络上,数据接入,清洗,ETL 等相关书籍论文,希望能够帮助大家。 数据清洗是大数据不可缺少的步骤之一
  •   数据接入就是各种零散的数据(结构化,非结构化,半结构化数据)整合在一起,纳入统一大数据平台。 数据类型: 结构化数据(关系型数据库的数据)——通过ETL完成 日志数据接入——接入工具有Flume、FileBeats...

      由于来实习,领导说了几个概念!故将这些概念进行深入的学习理解!争取融会贯通不断发散继续学习!争取努力把这些词汇整明白!


    一、数据接入

    定义:
      数据接入就是各种零散的数据(结构化,非结构化,半结构化数据)整合在一起,纳入统一大数据平台。

    数据类型:

    • 结构化数据(关系型数据库的数据)——通过ETL完成
    • 日志数据接入——接入工具有Flume、FileBeats、Logstash
    • IOT(internt of thing)数据接入:通常为流数据。通过kafka接入
    • 文件数据接入::通过FTP或者WebDAV协议接入

    名词解释:

    ETL:Extract-Transform-Load的缩写,将数据从源端经过抽取(extract)、转换(transform)、加载(load)至目标端的过程。ETL以前主要是:用户从数据源抽取所需的数据,清洗转换,加载到定义好的数据仓库模型,而在大数据时代,ETL 过程逐渐被ELT,即提取-加载-转换代替,其中数据转换根据下游使用的需要在大数据平台中进行,而不是在加载阶段期间。
    流数据:流数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合(来自百度百科)
    FTP:文件传输协议。用于互联网双向传输,控制文件下载空间在服务器复制文件从本地计算机或本地上传文件复制到服务器上的空间


    二、数据清洗

    定义:
      数据清洗是指发现并纠正数据文件中可识别的错误,检查数据一致性,处理无效值和缺失值等,数据清洗就好比做一道菜之前需要先择菜洗菜一样!个人认为数据清洗更多用python实现!说错了希望大佬可以指正!

    类型(并不全面):

    • 删除多列
    • 转换数据类型
    • 检查缺失数据
    • 将分类变量转换为数值变量
    • 删除列中的字符串
    • 删除列中的空格
    • 用字符串连接两列(带条件)
    • 转换时间戳(从字符串到日期时间格式)

    Python代码链接及原文

      清洗同时要保证数据的一致性,是要解决数据分散在各个系统,不同部分重复开发报表,不同报表计算口径不一的问题。建立统一的数据仓库,集中解决数据不一致的问题,并保持严格的定期维护。


    三、KPI统计开发

    KPI:
      关键绩效指标(KPI:Key Performance Indicator)是通过对组织内部流程的输入端、输出端的关键参数进行设置、取样、计算、分析,衡量流程绩效的一种目标式量化管理指标,是把企业的战略目标分解为可操作的工作目标的工具。针对于人员内部工作的量化

    OKR:
      在搜集KPI相关资料时,发现了OKR这个概念,同样也是量化的一种工具,接下来进行简单介绍;OKR就是Objectives and Key Results,即目标与关键结果法。OKR是一种战略目标任务体系,是一套明确目标并跟踪其完成情况的管理工具和方法。这个工具需要有极致聚焦的明确目标和量化该目标的数个关键结果。(这里仅仅是简单说一句,重点还在KPI)
    在这里插入图片描述

      工具没有好坏,只有是否适合!两种工具都有其适用的环境。


    四、业务场景数据分析

      业务场景分析的含义我查找了很多资料没有找到,谈谈自己的理解:在现实的业务场景中,分析业务中的真实数据,发现潜在信息,加以利用。

    整体分析思路

    • 明确业务场景(分析处于哪个维度?)
    • 确定分析目标(维度中具体分析哪个事物?)
    • 构建分析体系(包括数据指标和分析框架)
    • 梳理核心指标(针对业务场景,找到核心指标)

    在知乎看到的一句话(侵权删):
      作为一名分析师,要构建自己的分析体系,让自己的数据分析结果,成为可以切实推动业务发展的驱动力。需要具备以下综合能力:数据思维(就是定量化的思维方式)、业务理解能力(需要不断学习和积累)、数据分析的工具、分析方法和模型、可视化的技能、报告撰写。有好的分析结论,也要能输出出来。


    在这里插入图片描述

    展开全文
  • 本手册主要介绍了,一个将传统数据接入到Hadoop集群的数据接入方案和实施方法。供数据接入和集群运维人员参考。 1.1. 整体方案 Flume作为日志收集工具,监控一个文件目录或者一个文件,当有新数据加入时,收集新...
    作者博客迁移至博客园:http://www.cnblogs.com/xiaodf/ 
    

    1. 概述

    本手册主要介绍了,一个将传统数据接入到Hadoop集群的数据接入方案和实施方法。供数据接入和集群运维人员参考。

    1.1.  整体方案

    Flume作为日志收集工具,监控一个文件目录或者一个文件,当有新数据加入时,收集新数据发送给KafkaKafka用来做数据缓存和消息订阅。Kafka里面的消息可以定时落地到HDFS上,也可以用Spark Streaming来做实时处理,然后将处理后的数据落地到HDFS上。

    1.2. 数据接入流程

    本数据接入方案,分为以下几个步骤:

    l 安装部署Flume:在每个数据采集节点上安装数据采集工具Flume。详见“2、安装部署Flume”。

    l 数据预处理:生成特定格式的数据,供Flume采集。详见“3、数据预处理”。

    l Flume采集数据到Kafka: Flume采集数据并发送到Kafka消息队列。详见“4Flume采集数据到Kafka”。

    l Kafka数据落地:将Kafka数据落地到HDFS。详见“5Kafka数据落地”。

     

    2. 安装部署Flume

    若要采集数据节点的本地数据,每个节点都需要安装一个Flume工具,用来做数据采集。

    2.2.1下载并安装

    到官网去下载最新版本的Flume

    下载地址为:http://flume.apache.org/,目前最新版本为1.6.0,需要1.7及以上版本的JDK

    1、解压

    tar -xzvf apache-flume-1.6.0-bin.tar.gz  -C /usr/local/

    2、安装JDK1.7

       如果节点上JDK版本低于1.7,需要安装1.7或以上版本的JDK

    JDK 1.7 下载地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

    Flume目录下创建一个java目录,存放JDK

    cd /usr/local/apache-flume-1.6.0-bin

    mkdir java

    cd java

    tar -xzvf jdk-7u79-linux-x64.tar.gz

     

    2.2.2配置Flume系统参数

    修改 flume-env.sh 配置文件,主要是JAVA_HOME变量设置

    cd /usr/local/apache-flume-1.6.0-bin/conf

    cpflume-env.sh.templateflume-env.sh

    flume-env.sh里面设置FLUME_CLASSPATH变量和JAVA_HOME变量,

    示例:

    export JAVA_HOME=/usr/local/apache-flume-1.6.0-bin/java/jdk1.7.0_79

    FLUME_CLASSPATH="/usr/local/apache-flume-1.6.0-bin/"

    变量具体内容根据实际修改

     

    2.2.3添加Flume第三方依赖

    添加第三方依赖包flume-plugins-1.0-SNAPSHOT.jar,此包实现了一个Flume拦截器,将Flume采集到的数据进行序列化、结构化等预处理,最后每条数据生成一条Event数据返回。

     

    cd /usr/local/apache-flume-1.6.0-bin

    mkdir plugins.d    --创建依赖目录,目录名必须为plugins.d

    cd plugins.d 

    mkdir flume-plugins          --项目目录,目录名随意

    cd flume-plugins

    mkdir lib           --jar目录,目录名必须为lib

    将第三方jarflume-plugins-1.0-SNAPSHOT.jar放在lib目录下

    2.2.4添加Hive配置文件

    hive-site.xml文件拷贝到/usr/local/apache-flume-1.6.0-bin/conf目录下,并修改hive元数据地址与真实地址对应。如下所示:

     <property>

      <name>hive.metastore.uris</name>

      <value>thrift://m103:9083,thrift://m105:9083</value>

     </property>

     

    2.2.5创建Flume agent配置文件

    创建flume启动配置文件,指定sourcechannelsink 3个组件内容。每个组件都有好几种配置选项,具体配置请查看Flume官网。创建配置文件flume.conf,示例如下:

     

    vim flume.conf

    a1.sources = x1

    a1.sinks = y1

    a1.channels = z1

    # Describe/configure the source

    a1.sources.x1.type = exec

    a1.sources.x1.channels = z1

    a1.sources.x1.command = tail -F /home/xdf/exec.txt

    # Describe the sink

    a1.sinks.y1.type = logger

    # Use a channel which buffers events in memory

    a1.channels.z1.type = memory

    a1.channels.z1.capacity = 1000

    a1.channels.z1.transactionCapacity = 100

    # Bind the source and sink to the channel

    a1.sources.x1.channels = z1

    a1.sinks.y1.channel = z1

     

    2.2.6启动Flume Agent

    生产环境下,参数-Dflume.root.logger=INFO,console去掉console,此处只为方便查看测试结果,选择将日志打印到控制台。若Flume agent正常启动,说明Flume安装成功。

     

     

    cd /usr/local/apache-flume-1.6.0-bin

    ./bin/flume-ng agent --conf conf --conf-file flume.conf --name a3 -Dflume.root.logger=INFO,console

     

    2.2.7 测试

    上面配置的example.conf文件,实现的功能是监控文件/home/xdf/exec.txt,如果有新数据写入时,Flume就会采集到新数据并打印在控制台上。

    测试用例:向/home/xdf/exec.txt文件中写入内容“hello flume”,查看控制台是否打印出“hello flume”。正常输出如下:

     

    echo 'hello flume' >> /home/xdf/exec.txt

    2015-06-30 16:01:52,910 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 68 65 6C 6C 6F 20 66 6C 75 6D 65 hello flume }

     

    至此,Flume安装部署完毕。

    3. 数据预处理

    1、Flume采集数据都是按行分割的,一行代表一条记录。如果原始数据不符合要求,需要对数据进行预处理。示例如下:

    原始数据格式为:

    out: === START OF INFORMATION SECTION ===

    out: Vendor:               TOSHIBA

    out: Product:              MBF2300RC

    out: Revision:             0109

    out: User Capacity:        300,000,000,000 bytes [300 GB]

    out: Logical block size:   512 bytes

       经过预处理,我们将数据变为一条5个字段的记录:

    TOSHIBA;MBF2300RC;0109;300;512

     

    2、如果要将上面数据接入到hive中,我们还需要下面几个处理:

    a. 创建一张hive

    create table test(Vendor string,Product string,Revision string,User_Capacity string,block string);

    b. 在Kafka节点上创建一个topic,名字与上面hive表名对应,格式为“hive-数据库名-表名”。示例如下:

    bin/kafka-topics --create --zookeeper localhost:2181/kafka     --topic hive-xdf-test  --partitions 1 --replication-factor 1

    c. 将第一步得到的记录数据与topic整合成一条记录,用“@@”分割。示例如下:

    hive-xdf-test @@TOSHIBA;MBF2300RC;0109;300;512

    d. Flume采集整合后的一条数据,通过topic获取hive表的元数据,根据元数据对记录数据进行结构化、序列化处理,然后经过Kafka存入到hive表中。具体操作参考下面具体步骤所示。

    4. Flume采集数据到Kafka

    Flume如果要将采集到的数据发送到Kafka,需要指定配置文件(如下:flume_test.conf)的sink类型为KafkaSink,并且指定Kafka broker list。配置文件示例如下,红色标注的为KafkaSink配置项:

    vim flume_test.conf

    a3.channels = c3

    a3.sources = r3

    a3.sinks = k3

     

    a3.sources.r3.type = exec

    a3.sources.r3.channels = c3

    a3.sources.r3.command = tail -F /home/xdf/exec.txt

    a3.sources.r3.fileHeader = false

    a3.sources.r3.basenameHeader = false

    a3.sources.r3.interceptors = i3

    a3.sources.r3.interceptors.i3.type =iie.flume.interceptor.CSVInterceptor$Builder

    a3.sources.r3.interceptors.i3.separator = ;

    a3.sources.r3.decodeErrorPolicy=IGNORE

     

    a3.channels.c3.type = memory

    a3.channels.c3.capacity = 10000

    a3.channels.c3.transactionCapacity = 1000

     

    a3.sinks.k3.channel = c3

    # a3.sinks.k3.type = logger

    #a3.sinks.k3.batchSize = 10

    a3.sinks.k3.type = org.apache.flume.sink.kafka.KafkaSink

    a3.sinks.k3.brokerList = localhost:9092

     

     

    注意:此处有一个拦截器插件的定义,它就是用来做结构化、序列化数据预处理的。此插件由上面配置的Flume第三方jar包中获得。

    a3.sources.r3.interceptors.i3.type =iie.flume.interceptor.CSVInterceptor$Builder

     

    5. Kafka数据落地

    我们提供了一个Camus工具,来定时将Kafka中的数据落地到hive表中。

    Camus工具包含以下三个文件:

    文件

    说明

    camus-example-0.1.0-cdh-SNAPSHOT-shaded.jar

    程序运行jar

    camus.properties

    配置文件

    camusrun.sh

    运行脚本

     

    配置文件需要根据实际情况,修改以下两个参数

    kafka.whitelist.topics=hive-xdf-test         ----数据对应的topic

    kafka.brokers=m105:9092,m103:9092            ----kafka broker lists

    需要指定多个topic时,用逗号间隔,示例:

    Kafka.whitelist.topics=topic1,topic2,topic3

    修改完配置文件后,定时运行camusrun.sh脚本,就会将新生成的数据接入到topic所对应的hive表中了。

    6. 具体案例

    6.1 Smart数据接入

    6.1.2 创建hive

    最终我们要将smart数据接入到hive表中,所以我们首先要创建一个满足smart数据结构的hive表。

    create table smart_data(serial_number String ,update_time string,smart_health_status string ,current_drive_temperature int,drive_trip_temperature int,elements_in_grown_defect_list int,manufactured_time string ,cycle_count int    ,start_stop_cycles int    ,load_unload_count int    ,load_unload_cycles int    ,blocks_sent_to_initiator bigint ,blocks_received_from_initiator bigint ,blocks_read_from_cache bigint ,num_commands_size_not_larger_than_segment_size bigint ,num_commands_size_larger_than_segment_size bigint ,num_hours_powered_up string      ,num_minutes_next_test int    ,read_corrected_ecc_fast bigint ,read_corrected_ecc_delayed bigint ,read_corrected_re bigint ,read_total_errors_corrected bigint ,read_correction_algo_invocations bigint ,read_gigabytes_processed bigint ,read_total_uncorrected_errors string ,write_corrected_ecc_fast bigint ,write_corrected_ecc_delayed bigint ,write_corrected_re bigint ,write_total_errors_corrected bigint ,write_correction_algo_invocations bigint ,write_gigabytes_processed bigint ,write_total_uncorrected_errors string ,verify_corrected_ecc_fast bigint ,verify_corrected_ecc_delayed bigint ,verify_corrected_re bigint ,verify_total_errors_corrected bigint ,verify_correction_algo_invocations bigint ,verify_gigabytes_processed bigint ,verify_total_uncorrected_errors bigint ,non_medium_error_count bigint);

    6.1.2 创建topic

    Flume采集到的数据要生成一条条的event数据传给kafka消息系统保存,kafka需要事先创建一个topic来生产和消费指定数据。为系统正常运行,我们统一定义topic的名字结构为“hive-数据库名-表名”。需要在kafka集群节点上创建topic,示例如下:

    bin/kafka-topics --create --zookeeper localhost:2181/kafka     --topic hive-xdf-smart_data  --partitions 1 

    --replication-factor 1

    注意:此处的数据库名、表名,必须为上一步创建的hive表,因为Flume会通过此topic名来获取hive表的元数据信息,从而生成对应event数据。

    6.1.2 配置Flume agent启动参数

    生成参数文件smart_test.conf如下:

    vim smart_test.conf

    a3.channels = c3

    a3.sources = r3

    a3.sinks = k3

     

    a3.sources.r3.type = exec

    a3.sources.r3.channels = c3

    a3.sources.r3.command = tail -F /home/xdf/exec.txt

    a3.sources.r3.fileHeader = false

    a3.sources.r3.basenameHeader = false

    a3.sources.r3.interceptors = i3

    a3.sources.r3.interceptors.i3.type =iie.flume.interceptor.CSVInterceptor$Builder

    a3.sources.r3.interceptors.i3.separator = ;

    a3.sources.r3.decodeErrorPolicy=IGNORE

     

    a3.channels.c3.type = memory

    a3.channels.c3.capacity = 10000

    a3.channels.c3.transactionCapacity = 1000

     

    a3.sinks.k3.channel = c3

    # a3.sinks.k3.type = logger

    #a3.sinks.k3.batchSize = 10

    a3.sinks.k3.type = org.apache.flume.sink.kafka.KafkaSink

    a3.sinks.k3.brokerList = localhost:9092

     

    注意:

    1、此处数据源sources的类型为exec。具体命令为:

    a3.sources.r3.command = tail -F /home/xdf/exec.txt

    我们定时在每个节点运行一个脚本生成一条smart数据,将数据写入/home/xdf/exec.txt文件。

     

    flume用上面那个命令一直监控文件/home/xdf/exec.txt,如有新数据写入,则采集传输到kafka里。

     

    2、指定了一个自定义的第三方插件,Flume过滤器CSVInterceptor,将CSV格式的数据转化成结构化,序列化的Event格式。

     

    3、SinkKafkaSink,数据会写到kafka里面,特别注意:这里需要指定对应的brokerList,示例如下:

    a3.sinks.k3.brokerList = m103:9092,m105:9092

    6.1.3 开启Flume Agent

    执行命令:

    cd /usr/local/apache-flume-1.6.0-bin

    ./bin/flume-ng agent --conf conf --conf-file smart_test.conf --name a3 -Dflume.root.logger=INFO

    6.1.4 生成Smart数据

    在每个数据节点上运行createEvent.py脚本,生成一条结构化好的smart数据。

    脚本有两个参数smart_data.loghive-xdf-smart_data,前者为smart命令输出的原始信息文件,后者是topic名字,即上一步生成的topic名。

    python createEvent.py smart_data.log hive-xdf-smart_data > 

    /home/xdf/exec.txt

     

    此脚本会解析smart原始信息,生成一条带topic字段的结构化smart数据写入到/home/xdf/exec.txt文件中,数据格式如下:

    hive-xdf-smart_data@@EB00PC208HFC;2015-06-23 18:56:09;OK;28;65;0;week 08 of year 2012;50000;21;200000;69;-1;-1;-1;-1;-1;-1;-1;0;0;0;0;0;0;300744.962;0;0;0;0;0;0;10841.446;0;-1;-1;-1;-1;-1;-1;-1

    用符号“@@”将topicsmart数据分开,smart数据每列间用逗号隔开。

    6.1.5 测试时查看Kafka数据

    查看数据是否成功生成到kafka中,可在kafka节点上,通过下面命令查看:

    kafka-console-consumer --zookeeper localhost:2181/kafka --topic hive-xdf-smart_data --from-beginning

    结果展示:

    6.1.6 Kafka数据落地到hive表中

    打开camus.properties配置文件,修改以下两个参数

    kafka.whitelist.topics=hive-xdf-smart_data     ----smart数据对应topic

    kafka.brokers=m105:9092,m103:9092               ----kafka broker lists

    修改完配置文件后,定时运行camusrun.sh脚本,就会将新生成的smart数据接入到topic所对应的hive表中了。

    至此,数据接入流程完毕。

    展开全文
  • 从阿里云IOT云平台获取设备数据 前言: 这篇文档主要讲述的就是当设备的数据发送到物联网套件之后,用户的服务端如何获取设备 的数据。 通过阅读阿里云IoT文档,我们了解到队列中消息结构体如下: { ...

               从阿里云IOT云平台获取设备数据

    前言:   

    这篇文档主要讲述的就是当设备的数据发送到物联网套件之后,用户的服务端如何获取设备

    的数据。

    通过阅读阿里云IoT文档,我们了解到队列中消息结构体如下:

    {

      "payload": "Base64 Encode的数据",

      "messagetype": "status",

      "messageid": 996000000000000001,

      "topic": "具体的设备Topic",

      "timestamp": 1526450324

    }

    • messageid:IoT套件生成的消息ID
    • messagetype:指的是消息类型:设备状态status和设备上报消息upload
    • topic:表示该消息源自套件中的哪个topic,当messageType=status时,topic为null,当messageType=upload时,topic为具体的设备Topic
    • payload:数据为Base64 Encode的数据。当messageType=status时,数据是设备状态数据;当messageType=upload时,data即为设备发布到Topic中的原始数据。
    • timestamp:队列中消息生成时间戳,并非业务的时间戳

    一,基于HTTP/2通道的服务端订阅-设备状态和数据

    1.服务端订阅

    1.1 服务端订阅流程

    在IoT场景,有时候我们期望业务服务器能接收到设备状态和设备采集的数据,而不是通过云产品中转。这时我们可以开启服务端订阅,IoT平台会把设备产生的消息通过HTTP/2通道推送到业务服务器,以便根据自身业务场景消费。

    服务端可以直接订阅产品下配置的所有类型的消息。

    目前,新版物联网平台通过HTTP/2通道进行消息流转。配置HTTP/2服务端订阅后,物联网平台会将消息通过HTTP/2通道推送至服务端。通过接入HTTP/2 SDK,企业服务器可以直接从物联网平台接收消息。HTTP/2 SDK提供身份认证、Topic订阅、消息发送和消息接收能力,并支持设备接入和云端接入能力。HTTP/2 SDK适用于物联网平台与企业服务器之间的大量消息流转,也支持设备与物联网平台之间的消息收发。

     

    注:HTTP/2是方便、快捷、低延时,小堆积的消息流转通道,不是队列。目前是只有java8客户端sdk。 如果业务数据流非常大, 需要支持海量消息堆积,建议通过规则引擎流转队列方式处理。

    不论那个方式,消费端还是需要提升自身消费速率才能高效处理业务消息。

    目前服务端订阅是基于uid的,所有产品的消息都会被HTTP/2的client端消费,这时需要我们自己根据topic包含的productKey/deviceName区分

     

    http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/17309/15441768178965_zh-CN.png

    2.服务端订阅SDK使用

    目前仅提供Java8版SDK

    2.1 java sdk依赖

    <!-- Aliyun core -->
    <dependency>    
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>3.7.1</version>
    </dependency>
    <!-- iot message client -->
    <dependency>    
        <groupId>com.aliyun.openservices</groupId>    
        <artifactId>iot-client-message</artifactId>    
        <version>1.1.2</version>
    </dependency>
    

    2.2 消费IoT平台设备消息

     
    import java.net.UnknownHostException;
    import java.util.concurrent.ExecutionException;
    import com.aliyun.openservices.iot.api.Profile;
    import com.aliyun.openservices.iot.api.message.MessageClientFactory;
    import com.aliyun.openservices.iot.api.message.api.MessageClient;
    import com.aliyun.openservices.iot.api.message.callback.MessageCallback;
    import com.aliyun.openservices.iot.api.message.entity.Message;
    
    public class H2Client {
    
        public static void main(String[] args) throws UnknownHostException, 
                                    ExecutionException, InterruptedException {
            // 身份
            String accessKey = "阿里云accessKey";
            String accessSecret = "阿里云accessSecret";
            String regionId = "cn-shanghai";
            String uid = "阿里云账号 uid";
            String endPoint = "https://" + uid + ".iot-as-http2." 
                                    + regionId + ".aliyuncs.com";
            // 连接配置
            Profile profile = Profile.getAccessKeyProfile(endPoint, regionId, 
                                                        accessKey, accessSecret);
    
            // 构造客户端
            MessageClient client = MessageClientFactory.messageClient(profile);
            // 数据接收
            client.connect(messageToken -> {
                Message m = messageToken.getMessage();
                System.out.println("\ntopic="+m.getTopic());
                System.out.println("payload=" + new String(m.getPayload()));
                System.out.println("generateTime=" + m.getGenerateTime());
                // 此处标记CommitSuccess已消费,IoT平台会删除当前Message,
                // 否则会保留到过期时间
                return MessageCallback.Action.CommitSuccess;
            });
        }
    }
    
     

     

    3,数据解析

    3.1关于数据解析

    由于低配置且资源受限或者对网络流量有要求的设备,不适合直接构造JSON数据和云端通信,因此选择将数据透传到云端,由云端运行转换脚本将透传的数据转换成Alink JSON格式的数据。您可以在创建产品时,选择数据格式为透传/自定义格式,目前转换脚本通过JavaScript语言开发,需要开发者自行开发转换脚本。物联网平台为开发者提供了用于数据解析的在线脚本编辑器,方便您进行在线的编辑和模拟调试。

     

    3.2数据解析流程:

    https://cdn.nlark.com/yuque/0/2018/png/106007/1539084895427-76b39b46-ad24-472c-b094-f8bfad033bb9.png

    http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/7527/15366708437506_zh-CN.png

     

     

     

     

    4,使用限制

    当您使用服务端订阅时,请注意以下限制。

    限制

    描述

    JDK版本

    仅支持JDK8

    认证超时

    连接建立之后,需要立刻发送认证请求。如果15秒内没有认证成功,服务器将主动关闭连接。

    数据超时

    连接建立之后,客户端需要定期发送PING包来维持连接。发送PING包的时间间隔可以在客户端设置,默认为30秒,最大60秒。

    若超过60秒发送PING包或数据,服务端会关闭连接。

    若超过设定的时间,客户端没有收到PONG包或数据应答,SDK将主动断开重连,默认时间间隔为60秒。

    推送超时

    推送失败重试消息时,每次批量推送10条。若该批次消息在10秒后,仍未收到客户端回复的ACK,则认为推送超时。

    失败推送重试策略

    60秒重新推送一次因客户端离线、消息消费慢等原因导致的堆积消息。

    消息保存时长

    QoS0的消息保存1天,QoS1的消息保存7天。

    SDK实例个数

    每个阿里云账号最多可以启动64SDK实例。

    单租户限流限制

    默认单租户的限流限制为1,000 QPS。如果您有特殊需求,请提交工单。

     

    二,规则引擎 - 设备数据流转

    1,什么是规则引擎

    当设备基于Topic进行通信时,您可以使用规则引擎,编写SQL对Topic中的数据进行处理,并配置转发规则将处理后的数据转发到阿里云其他服务。例如:

     

    注意: 如果数据格式为二进制的数据,不支持转发至表格存储、时序时空数据库和云数据库RDS版。


    说明:二进制数据可使用 to_base64(*)将原始数据转换成base64String,同时支持内置函数和条件筛选。

     

    2,如何使用

     

    具体使用细节参考: https://www.yuque.com/cloud-dev/iot-tech/wr1bwu非常详细,在页面一顿配置即可,在此不再长篇大论。

    http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/7486/15402784632243_zh-CN.png

     

     

    3, 使用限制

    • 规则引擎基于Topic对数据进行处理。只有通过Topic进行通信时,才能使用规则引擎。
    • 规则引擎通过SQLTopic中的数据进行处理。
    • SQL语法目前不支持子查询。
    • 支持部分函数,比如deviceName()获取当前设备名称,具体请参考函数列表。

    描述

    限制

    单账号最多可以设置1000条规则。

    1000

    一条规则中转发数据的操作不能超过10个。

    10

    数据转发性能依赖所转发的云产品实例,在云产品实例性能足够的情况下,规则引擎为单个阿里云账号提供1000QPS的数据转发能力。即,子账号共享主账号配额;消息并发处理,每秒最多允许1000条消息经过规则引擎流转到其他云产品。 如果请求量超出该限制或云产品写入耗时超过1s,数据转发会被限流。

    1000QPS

    数据转发依赖其他云产品,使用时需确保目标云产品实例正常。目标云产品的实例宕机、欠费、参数错误(如授权变更、值非法)、配置错误等异常状况将会导致消息流转失败。

    -

    规则引擎不保证消息只到达一次,在分布式环境下,某些rebalance短暂不一致可能导致一条消息发送多次情况,应用方收到消息后需要去重。

    -

     

     

    三,阿里收费规则

    1,阿里收费规则

    案例6:高级版

    高级版的收费项目包括消息传输费用和设备管理费用。

    有一个设备每秒向物联网平台发送0.4 KB大小的消息,然后物联网平台将该消息传输到5个设备,1个应用程序,即5个设备和1个应用程序接收该消息。当月有30天。

    计费项:

    • 消息传输费用

    每条消息大小0.4 KB,小于每条消息的大小限制(0.5 KB),每条消息计为1条消息。

    每月发送消息数:1×60×60×24×30=259.2万。

    每月接收消息数:6×1×60×60×24×30=1555.2万。

    总消息数:259.2+1555.2=1814.4万。

    100万条消息免费,所以,当月需付费的消息数:1814.4–100=1714.4万。

    按照3.6/100万条消息计费,当月消息传输费用:1714.4x(3.6/100)=61.72元。

    • 设备管理费用

    日活设备数量为6个(1个消息发送设备和5个消息接收设备),小于每天每个账号10个免费日活设备赠额,所以设备管理费用为0元。

    当月应付费用:61.72+0=61.72元。

     

    注意:

    您可以免费使用规则引擎转发消息,但是将数据转发至其他云产品中时,其他云产品正常计费。

    展开全文
  • 随机接入过程

    千次阅读 2021-01-16 19:46:38
    所以随机接入不仅用于初始化接入,而且还可以用于切换过程中的新小区接入、无线链路失败后的接入、在有上/下行数据传输时重新恢复上行同步以及UL-SCH资源请求等。中文名随机接入过程外文名Randomaccessprocedure应用...

    随机接入过程

    编辑

    锁定

    随机接入是LTE系统中一个基本且重要的过程,其主要目的如下:①建立上行链路同步;②建立一个唯一终端标识C-RNTI,请求网络分配给终端上行链路资源。所以随机接入不仅用于初始化接入,而且还可以用于切换过程中的新小区接入、无线链路失败后的接入、在有上/下行数据传输时重新恢复上行同步以及UL-SCH资源请求等。

    中文名

    随机接入过程外文名

    Random access procedure

    应用学科

    通信

    随机接入过程LTE

    LTE无线接入协议体系结构如图1所示,该接入系统分为三层:层一为物理层(PHY),层二为媒体接入控制子层(MAC)、无线链路控制子层(RLC)和分组数据会聚协议子层(PDCP),层三为无线资源控制层(RRC)。其中物理层是无线接入系统最底层,它以传输信道为接口,向上层提供服务。

    5e4673ea714def7614ff5769d8ea2a90.png

    图1 LTE无线接入协议体系结构

    LTE(LongTermEvolution,长期演进),又称E-UTRA/E-UTRAN,和3GPP2UMB合称E3G(Evolved3G)

    LTE是由3GPP(The3rdGenerationPartnershipProject,第三代合作伙伴计划)组织制定的UMTS(UniversalMobileTelecommunicationsSystem,通用移动通信系统)技术标准的长期演进,于2004年12月在3GPP多伦多TSGRAN#26会议上正式立项并启动。LTE系统引入了OFDM(OrthogonalFrequencyDivisionMultiplexing,正交频分复用)和MIMO(Multi-Input&Multi-Output,多输入多输出)等关键传输技术,显著增加了频谱效率和数据传输速率(20M带宽2X2MIMO在64QAM情况下,理论下行最大传输速率为201Mbps,除去信令开销后大概为140Mbps,但根据实际组网以及终端能力限制,一般认为下行峰值速率为100Mbps,上行为50Mbps),并支持多种带宽分配:1.4MHz,3MHz,5MHz,10MHz,15MHz和20MHz等,且支持全球主流2G/3G频段和一些新增频段,因而频谱分配更加灵活,系统容量和覆盖也显著提升。LTE系统网络架构更加扁平化简单化,减少了网络节点和系统复杂度,从而减小了系统时延,也降低了网络部署和维护成本。LTE系统支持与其他3GPP系统互操作。LTE系统有两种制式:FDD-LTE和TDD-LTE,即频分双工LTE系统和时分双工LTE系统,二者技术的主要区别在于空中接口的物理层上(像帧结构、时分设计、同步等)。FDD-LTE系统空口上下行传输采用一对对称的频段接收和发送数据,而TDD-LTE系统上下行则使用相同的频段在不同的时隙上传输,相对于FDD双工方式,TDD有着较高的频谱利用率。

    LTE/EPC的网络架构如图2所示,其中E-URTAN对应于图3,E-URTAN无线接入网络架构。

    507f1962661d576e6e879a10784b05cb.png

    图2 3GPP接入的非漫游架构

    a1f41573ef1d370a31225c0393c9352b.png

    图3 E-UTRAN的网络结构

    随机接入过程基本原理

    LTE系统上行链路随机接入过程采用非同步的接入方式,即在终端还未获得上行时间同步或丧失同步时,用于eNodeB估计、调整UE上行发射时钟的过程,这个过程也同时用于UE向eNodeB请求资源分配。eNodeB响应UE的非同步随机接入尝试,向UE发送时间信息来调整上行链路发送定时,并分配所传送数据或控制信令的上行链路资源,而且定时信息和上行数据资源分配也可以组合在一起发送到UE。随机接入过程有两种模式:①基于竞争的随机接入;②无竞争的随机接入。在LTE系统中,每个小区中有64个可用的前导序列,对于基于竞争的随机接入过程来说,UE随机选择一个前导序列向网络侧发起随机接入过程,因此如若同一时刻多个UE使用同一个前导序列发起随机接入过程,就会发生冲突,有可能导致接入失败。而无竞争的随机接入使用eNodeB所分配的前导序列发起随机接入过程,故接入成功率较高。但考虑到仅在切换或有下行数据发送两个场景下,eNodeB能够事先知道UE需要发起随机接入过程,所以仅在这两个场景可以使用无竞争的随机接入,对于其他应用场景,只能使用基于竞争的随机接入。

    (1)基于竞争的随机接入过程

    LTE中,基于竞争的随机接入流程如图5-3所示。

    基于竞争的随机接入主要分为4个步骤。

    a.UE随机选择一个前导序列,在RACH信道上发送。

    b.eNodeB在检测到有前导序列发送后,下行发送随机接入响应,随机接入响应中至少应包含以下信息。

    -所收到的前导序列的编号。

    -定时调整信息。

    -为该UE分配的上行资源位置指示信息。

    -临时分配的C-RNTI。

    c.UE在收到随机接入响应后,根据其指示,在分配的上行资源上发送上行消息。

    d.eNodeB接收UE的上行消息,并向接入成功的UE返回冲突解决消息。

    (2)无竞争的随机接入过程

    无竞争的随机接入过程是指UE在接入时,使用eNodeB提供的特定前导序列和PRACH资源,这样就不会与其他的UE发生冲突,以保证接入的成功率,其实现流程如图5-4所示。

    0b9572a32eda73c871094d80de3a1cd9.png

    图5-3 基于竞争的随机接入流程图

    b56c2b12dde843528d59d4146b046c49.png

    5-4 无竞争的随机接入流程

    与基于竞争的随机接入过程相比,该流程增加了eNodeB分配并发送特定前导序列的过程,减少了冲突解决的过程,其具体过程如下。

    a.在下行方向,eNodeB通过专用信令指派专用随机接入前导。

    b.UE在RACH信道上发送eNodeB分配的随机接入前导。

    c.eNodeB在检测到有前导序列发送后,下行发送随机接入响应,随机接入响应中至少应包含以下信息。

    -前导序列的编号。

    -定时调整信息。

    -为该UE分配的上行资源位置指示信息。

    随机接入过程应用场景分析

    上一节已经对随机接入过程的原理、实现方式和实现流程进行了介绍,本节在此基础之上对随机接入过程的应用场景进行分析,具体如下。

    场景1:UE处于RRC_IDLE状态,进行初始随机接入。

    场景2:无线链路失败后需要进行RRC连接重建。

    场景3:切换,即UE处于RRC_CONNECTED状态,由于某些原因(如当前服务小区信号质量变差等),需要切换到另一个目标小区。

    场景4:UE处于RRC_CONNECTED状态,但没有取得上行同步,然而UE需要接收新的下行数据,然后在上行链路上反馈ACK/NACK信息。

    场景5:UE处于RRC_CONNECTED状态,但没有取得上行同步,然而UE需要发送新的上行链路数据或者是控制信息(如事件触发测量报告等)。

    场景6:UE处于RRC_CONNECTED状态,需要进行定位。

    上一节中我们已经提到,LTE的随机接入过程包括基于竞争的随机接入和无竞争的随机接入两种,那么在上面所提到的不同场景下,所采用的随机接入方式如何选择呢?建议如下。

    (1)从3GPP协议的角度来看,上面6种应用场景下,UE均可以采用基于竞争的随机接入。

    (2)对于场景3和场景4,从3GPP协议的角度来看,UE既可以采用基于竞争的随机接入,也可以采用无竞争的随机接入,具体方式取决于厂家设备的实现。如果采用无竞争的随机接入方式,则eNodeB可以通知UE使用特定无冲突的前导序列和PRACH资源来进行接入,这样就可以避免可能发生的冲突,减少随机接入的时间延迟。尤其对于场景3,为了保证切换的成功率和切换的时延,可考虑采用无竞争的随机接入。

    词条图册

    更多图册

    展开全文
  • iOS 更新之 已接入无线局域网却提示需要接入。本节介绍,iOS 进行系统升级时,已经接入无线局域网了,却在要iOS系统升级更新时提示 需要接入无线局域网才能下载此更新,且下载与安装是灰色,不能点击的解决办法,...
  • ELK 接入日志数据配置参考

    千次阅读 2017-06-13 16:21:33
    一、简介  现有 ELK 平台由 Filebeat, Logstash, ElasticSearch, Kibana 构成,主要提供应用日志数据的...接入日志数据大致需要配置其中三个组件 Filebeat, Logstash, Kibana,如果只是简单采集及查看日志
  • 与有线接入比较,固定无线接入有如下显著特点:对自然条件适应性强。用户只要在覆盖区内,不需要特别定位和精确规划。在地形地物不适于架线铺缆的环境中,FWA系统显得尤其适合,建设速度快。用户端设备的安装、调试...
  • 无线接入过程

    千次阅读 2018-04-15 14:23:49
    STA(工作站)启动初始化、开始正式使用AP传送数据帧前,要经过三个阶段才能够接入(802.11MAC层负责客户端与AP之间的通讯,功能包括扫描、接入、认证、加密、漫游和同步等功能): 1.扫描阶段(SCAN) 2.认证...
  • 简述几种因特网的接入方式?

    千次阅读 2021-07-28 09:54:07
    再通过公用电话网络连接到ISP,通过ISP的主机接入Internet,在建立拨号连接以前,向ISP(我国一般是当地电信部门)申请拨号连接的使用权,获得使用帐号和密码,每次上网前需要通过帐号和密码拨号。拨号上网方式又称为...
  • 设备接入阿里物联网云步骤

    千次阅读 2020-08-22 10:50:53
    浏览器打开SDK下载链接 ...选择JAVA SDK ...解压DEMO源码,用eclipse导入这个maven工程,需要连接外网 配置阿里物联网设备,用浏览器打开 https://iot.console.aliyun.com/lk/vpc/instance?spm=5176.cniot.0.0.2e
  • 友盟GameAnalytics(非应用) 介绍 ...sdk版本:安卓sdk: 使用unitypackage里的版本 下载新版本数据不会上传到后台(坑) ​ iOS sdk: 使用unitypackage里的版本 下载新版本...接入步骤 参考官网:https://develo
  • 广点通sdk接入

    万次阅读 2018-10-10 16:00:28
    腾讯广点通Marketing API接入Web行为数据 api思路: (1)用户点击腾讯推广的广告,同时生成随机的 click_id,并追加到落地页的url。 (2)落地页的表单提交后,可以利用 API 将 click_id 和 转化类型(Action...
  • 一、打开主域项目,在 菜单栏 - 项目 中打开构建发布面板,选择 Wechat Game 平台,填 [开放数据域代码目录]。该目录是开放数据域构建后所在的路径,并且这个路径需要放在主域构建目录下。然后点击 构建。 该步骤...
  • ESP8266接入阿里云物联网平台全过程

    万次阅读 多人点赞 2019-10-23 11:39:14
    ESP8266接入阿里云物联网平台全过程: 1.阿里云物联网平台配置 ①创建产品 ②在设备管理->设备处,点击添加设备,产品选择刚刚创建的TEST 点击确认,弹出设备证书(三元素,很重要),可先将三元素一键复制到...
  • 在任何情况下,如终端需要同网络建立通信,都需通过RACH(随机接入信道)向网络发送一个报文来向系统申请一条信令信道,网络将根据信道请求需要来决定所分配的信道类型。 这个在RACH 上发送的报文被称做“信...
  • 终端需要搜索到服务自己的网络,然后接入网络,这就涉及小区搜索过程和随机接入过程;在交互过程中,终端和网络都需将功率调节到合适的大小,以增强覆盖或抑制干扰,这就是功率控制过程;网络想找到某一个终端,...
  • 接着,UE需要获取到小区的系统信息(System Information),这样才能知道该小区是如何配置的,以便接入该小区并在该小区内正确地工作。 UE通过检测PBCH,能得到以下信息: (1)通过接收到的MasterInformationBlock...
  • 树莓派接入阿里云IOT平台1(Python模拟数据上传)

    千次阅读 多人点赞 2020-10-05 14:38:39
    树莓派接入阿里云IOT平台1(Python模拟数据上传) 主要是通过Python脚本模拟两个数据(温度和相对湿度)上传到阿里云,非常简单,只要有一个树莓派 即可,不需要其他传感器,学习完本文章,下一章将搭载一些传感器...
  • 4g网速最快的apn接入点 如图所示

    万次阅读 2021-01-17 18:58:00
    导读:讲到网速,大家应该都知道,有朋友问联通4g怎样设置接入点网速最快,当然了,还有人问哪里4g网速最快,这到底是咋回事?事实上中国联通h十根4g哪个好呢,下面是小编为大家整理的4g网速最快的apn接入点,一起...
  • 5G/NR 随机接入过程学习总结

    万次阅读 多人点赞 2019-05-21 23:14:42
    对于随机接入过程,NR与LTE之间有相同点,也有不同点,其最大的区别在于触发场景已经Msg1的处理,详情见下文。 第21章 随机接入过程 21.1 随机接入过程事件触发场景 1) 初始接入:UE从RRC_IDLE态到RRC_CONNETTED...
  • 通过阅读此文档,开发人员可以了解 OneNET 平台接入的总体流程,包括 TCP 透传接入 OneNET 平台步骤,基于 OneNET 平台开发上层应用。
  • 阿里云接入备案

    千次阅读 2018-09-30 09:48:45
    以下全部内容来源于:阿里云官网,复制下来只是为了方便自己查看;...接入备案只是增加一个服务商数据接入过程中无法变更信息。 接入成功后,不会影响您上家服务商处的备案数据,您可同时使用两家服务...
  • 之前写了ONENET平台的MQTT协议接入说明,但没过多久,它们给出的信息显示可能要收费。这次给大家更新一个阿里云平台的接入例程,毕竟马云爸爸还是比较大气的,相信不会那么抠门。 方法、步骤、代码基本是类似的,...
  • 1.Mqtt.Fx(后文简称fx)模拟设备接入华为的设备管理平台,设备管理平台可接收fx上报的数据。 2.通过官方Java API进行消息订阅,搭建应用服务器,接收IoT平台推送的数据,显示在控制台。 效果图如下: ...
  • 5G NR 随机接入过程(1)

    万次阅读 多人点赞 2019-08-16 20:30:58
    本文参考协议38300 38211 38212 38213 38321 38331 本文尽量只用协议原话,加入部分翻译以及一些自己的理解是为了让过程更加清晰明了 ...NR随机接入的发起者可以是下面的三种情况: [TS 38.321] The Random Acc...
  • 网络接入与身份认证简介

    千次阅读 2019-03-03 10:07:13
    MAC接入认证技术 MAC地址认证是一种基于端口和MAC地址对用户的网络访问权限进行控制的认证方法,是一种二层网络接入认证技术,与802.1X以及Portal不同,用户不需要安装任何客户端软件就可进行认证。设备在启动了MAC...
  • (详细请查看官网提供的接入文档和高级功能文档) 1 、 库文件导入 拖拽 Bugly.framework 文件到 Xcode 工程内 ( 请勾选 Copy items if needed 选项 ) ,如图:   注意 添加依赖库 SystemConfiguration.framework ...
  • 个人征信系统机构接入工作流程

    千次阅读 2020-03-31 16:12:04
    本流程适用于征信分中心开展机构接入和接口验收工作...申请函应说明机构性质、业务现状、业务系统、网络条件数据管理、接入名称及接入理由等内容,包括客户信息报送内容、业务信息数据项名称和含义、数据是总行集...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 672,890
精华内容 269,156
关键字:

数据接入需要什么步骤