Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 管道未使用过程将数据摄取到memsql表中_Apache Kafka_Singlestore - Fatal编程技术网

Apache kafka 管道未使用过程将数据摄取到memsql表中

Apache kafka 管道未使用过程将数据摄取到memsql表中,apache-kafka,singlestore,Apache Kafka,Singlestore,我将json(20个键值对)推送到kafka中,并且能够使用它并对其进行良好测试,以验证数据是否成功推送到kafka 下面的脚本正在创建管道,但没有将数据加载到memsql表。我是否需要修改JSON数据类型的创建管道脚本 CREATE OR REPLACE PIPELINE omnitracs_gps_evt_pipeline AS LOAD DATA KAFKA '192.168.188.110:9092/ib_Omnitracs' INTO procedure INGEST_OMNITRA

我将json(20个键值对)推送到kafka中,并且能够使用它并对其进行良好测试,以验证数据是否成功推送到kafka

下面的脚本正在创建管道,但没有将数据加载到memsql表。我是否需要修改JSON数据类型的创建管道脚本

CREATE OR REPLACE PIPELINE omnitracs_gps_evt_pipeline
AS LOAD DATA KAFKA '192.168.188.110:9092/ib_Omnitracs' 
INTO procedure INGEST_OMNITRACS_EVT_PROC;

DELIMITER //
CREATE OR REPLACE PROCEDURE INGEST_OMNITRACS_EVT_PROC(batch query(evt_json json))
AS
BEGIN
    INSERT INTO TEST(id, name) 
      SELECT evt_json::ignition,evt_json::positiontype
      FROM batch;
      ECHO SELECT 'HELLO';
END
//
DELIMITER ; 

TEST PIPELINE omnitracs_gps_evt_pipeline LIMIT 5;
START PIPELINE omnitracs_gps_evt_pipeline FOREGROUND LIMIT 5 BATCHES;

任何人都可以提供帮助。管道存储过程中不允许使用ECHO SELECT。当您运行启动管道时,应该会出现这样的错误。。。前台,或者在创建管道时(如果定义了该过程)。

您可能应该修改创建管道的AS LOAD DATA子句以执行本机JSON加载,如下所述:

原因有两个:

  • 编写的管道预计卡夫卡的输入将在TSV中 格式为1个字段。TSV是默认格式,它推断出预期的字段数 从参数到目标存储过程。事实上,输入JSON记录很可能会成功解析,但我不相信这一点

  • 使用本机JSON管道的subvalue_mapping子句来 提取和插入::点火和::位置类型, 完全跳过存储过程的开销。此外,书面形式的管道将 实例化内存中的临时JSON数据结构,这是相对简单的 昂贵的

我建议如下:

CREATE OR REPLACE PIPELINE omnitracs_gps_evt_pipeline
AS LOAD DATA KAFKA '192.168.188.110:9092/ib_Omnitracs' 
INTO TABLE TEST
FORMAT JSON
( 
  id <- ignition_event,
  name <- position_type
);
创建或替换管道omnitracs\u gps\u evt\u管道
加载数据KAFKA'192.168.188.110:9092/ib_Omnitracs'
入表测试
格式JSON
( 

id从kafka中的生产者中删除ProducerConfig.TRANSACTIONAL\u id\u CONFIG配置后,管道现在正在工作

现在只有一个小小的疑问,就是连双引号都被添加到了表列中。如何摆脱它。
发送给卡夫卡的JSON:“{'ID':1,'NAME':\'a\'}”

我用上述内容修改了我的管道脚本。它仍然不起作用。0行受影响。>测试管道omnitracs\u gps\u evt\u管道限制5;>启动管道omnitracs\u gps\u evt\u管道前景限制5批;你能给我们发送
从信息模式中选择*管道游标吗
?数据库名称:MEMSQLDB管道名称:omnitracs_gps_evt_管道源_类型:卡夫卡源_分区_ID:0最早_偏移量:0最新_偏移量:1320光标_偏移量:0成功的_光标_偏移量:NULL更新的_UNIX_时间戳:1549542203.604487额外的_字段:NULLJSON_提取_将执行所需操作
CREATE PIPELINE FEB13_PIPELINE_2
AS LOAD DATA KAFKA '192.168.188.110:9092/FEB13_PROC' 
INTO procedure INGEST_EVT_PROC;

DELIMITER //
CREATE OR REPLACE PROCEDURE INGEST_EVT_PROC(batch query(evt_json json))
AS
BEGIN
    INSERT INTO TEST_FEB13(ID, NAME) 
      SELECT evt_json::ID,evt_json::NAME
      FROM batch;
END
//
DELIMITER ;