Grave dados de processamento de fluxo IoT no Databend usando LF Edge eKuiper

Autor: Han Shanjie

Engenheiro de P&D do Databend Cloud

https://github.com/hantmac

LF Edge eKuiper

LF Edge eKuiper é um software de código aberto leve para análise de borda de IoT e processamento de streaming implementado em Golang. Ele pode ser executado em vários dispositivos de borda com recursos limitados. O principal objetivo do eKuiper é fornecer uma estrutura de software de streaming na borda (semelhante ao Apache Flink (abre uma nova janela) ). O mecanismo de regras do eKuiper permite que os usuários forneçam regras baseadas em SQL ou em gráficos (semelhantes ao Node-RED) para criar aplicativos de análise de borda IoT em minutos. Para obter uma introdução detalhada, consulte [LF Edge eKuiper - software de processamento de fluxo de borda IoT ultraleve ( https://ekuiper.org/docs/zh/latest/ ).

Coletor SQL do Databend

eKuiper suporta expansão em três aspectos através de Golang ou Python.Ao 源 (Source)suportar diferentes coletores, os usuários podem enviar resultados de análises para diferentes sistemas de expansão. O Databend as a Sink também foi integrado ao plug-in eKuiper. A seguir, é apresentado um caso que mostra como usar o eKuiper para gravar dados de processamento de fluxo de IoT no Databend.SQL 函数目标 (Sink)

Compilar o plug-in eKuiper e Databend Sql

Kuiper

git clone https://github.com/lf-edge/ekuiper & cd ekuiper
make

Plug-in Databend SQL

go build -trimpath --buildmode=plugin -tags databend -o plugins/sinks/Sql.so extensions/sinks/sql/sql.go

Copie o plug-in de coletor compilado para o diretório de construção:

cp plugins/sinks/Sql.so _build/kuiper-1.11.1-18-g42d9147f-darwin-arm64/plugins/sinks

Criação de tabela de databend

Primeiro crie a tabela de destino ekuiper_test no Databend:

create table ekuiper_test (name string,size bigint,id bigint);

Inicie o eKuiperd

cd _build/kuiper-1.11.1-18-g42d9147f-darwin-arm64 
./bin/kuiperd

O serviço inicia normalmente:

Crie fluxos e regras

O eKuiper fornece duas maneiras de gerenciar vários fluxos, regras e alvos: uma é iniciar a interface de gerenciamento visual por meio da [imagem docker] do ekuiper-manager ( https://hub.docker.com/r/lfedge/ekuiper) . Uma é gerenciá-lo por meio de ferramentas CLI. Aqui usamos CLI.

criar fluxo

Stream é a forma de execução do conector de fonte de dados no eKuiper. Deve especificar um tipo de origem que defina como se conectar ao recurso externo. Aqui criamos um fluxo para obter dados da fonte de dados do arquivo json e enviá-los para o eKuiper.

Primeiro configure a fonte de dados do arquivo, onde está localizado o arquivo de configuração do conector /etc/sources/file.yaml.

default:
  # 文件的类型,支持 json, csv 和 lines
  fileType: json
  # 文件以 eKuiper 为根目录的目录或文件的绝对路径。
  # 请勿在此处包含文件名。文件名应在流数据源中定义
  path: data
  # 读取文件的时间间隔,单位为ms。如果只读取一次,则将其设置为 0
  interval: 0
  # 读取后,两条数据发送的间隔时间
  sendInterval: 0
  # 是否并行读取目录中的文件
  parallel: false
  # 文件读取后的操作
  # 0: 文件保持不变
  # 1: 删除文件
  # 2: 移动文件到 moveTo 定义的位置
  actionAfterRead: 0
  # 移动文件的位置, 仅用于 actionAfterRead 为 2 的情况
  moveTo: /tmp/kuiper/moved
  # 是否包含文件头,多用于 csv。若为 true,则第一行解析为文件头。
  hasHeader: false
  # 定义文件的列。如果定义了文件头,该选项将被覆盖。
  # columns: [id, name]
  # 忽略开头多少行的内容。
  ignoreStartLines: 0
  # 忽略结尾多少行的内容。最后的空行不计算在内。
  ignoreEndLines: 0
  # 使用指定的压缩方法解压缩文件。现在支持`gzip`、`zstd` 方法。
  decompression: ""

Use a CLI para criar um Steam chamado stream1:

./bin/kuiper create stream stream1 '(id BIGINT, name STRING,size BIGINT) WITH (DATASOURCE="test.json", FORMAT="json", TYPE="file");'

O conteúdo do arquivo Json é:

[
  {"id": 1,"size":100, "name": "John Doe"},
  {"id": 2,"size":200, "name": "Jane Smith"},
  {"id": 3,"size":300, "name": "Kobe Brant"},
  {"id": 4,"size":400, "name": "Alen Iverson"}
]

Criar regra de coletor do Databend

Uma regra representa um processo de processamento de fluxo e define ações desde a entrada de dados na fonte de dados do fluxo, passando por diversas lógicas de processamento, até a entrada de dados em um sistema externo. O eKuiper possui duas maneiras de definir a lógica de negócios das regras. Use a combinação SQL/Ação ou use a API gráfica recém-adicionada.

Aqui definimos a lógica de negócios da regra de maneira declarativa, especificando sqlos atributos e . actionsNele sqlé definida uma consulta SQL que é executada em um fluxo predefinido, que transforma os dados. Os dados de saída podem então ser actionroteados para vários locais.

As regras são definidas por JSON. Aqui está a regra myRule.json pronta para ser criada:

{
  "id": "myRule",
  "sql": "SELECT id, name from stream1",
  "actions": [
    {
      "log": {
      },
      "sql": {
        "url": "databend://databend:databend@localhost:8000/default?sslmode=disable",
        "table": "ekuiper_test",
        "fields": ["id","name"]
      }
    }
  ]
}

Execute CLI para criar regras:

./bin/kuiper create rule myRule -f myRule.json

Você pode visualizar o status de execução das regras criadas:

./bin/kuiper getstatus rule myRule

Após a criação da regra, os dados que atendem às condições da regra serão enviados ao destino imediatamente.Neste momento, olhamos a tabela ekuiper_test do Databend e podemos ver que os dados na fonte de dados do arquivo foram gravados no Databend:

Você pode ver que como nossa regra SQL especifica apenas o campo id, nameapenas esses dois campos são escritos aqui.

para concluir

eKuiper é um software de processamento de fluxo da EMQ. É pequeno em tamanho e poderoso em funções. É amplamente utilizado em muitos cenários, como Internet das Coisas industrial, rede de veículos e análise de dados públicos. Este artigo descreve como usar o eKuiper para gravar dados de processamento de fluxo IoT no Databend.

Lei Jun anunciou a arquitetura completa do sistema do ThePaper OS da Xiaomi, dizendo que a camada inferior foi completamente reestruturada. Yuque anunciou a causa da falha e do processo de reparo em 23 de outubro. CEO da Microsoft, Nadella: Abandonar o Windows Phone e os negócios móveis foi uma decisão errada . As taxas de uso do Java 11 e do Java 17 excederam o acesso do Java 8 Hugging Face foi restrito. A interrupção da rede Yuque durou cerca de 10 horas e agora voltou ao normal. A Oracle lançou extensões de desenvolvimento Java para o Visual Studio Code . A Administração Nacional de Dados oficialmente revelou Musk: Doe 1 bilhão se a Wikipedia for renomeada como "Enciclopédia Weiji" USDMySQL 8.2.0 GA
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/5489811/blog/10120225
Recomendado
Clasificación