最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MLSQL Stack如何讓流調(diào)試更加簡單詳解

 更新時(shí)間:2019年06月04日 10:05:33   作者:祝威廉  
這篇文章主要給大家介紹了關(guān)于MLSQL Stack如何讓流調(diào)試更加簡單的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MLSQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

有一位同學(xué)正在調(diào)研MLSQL Stack對流的支持。然后說了流調(diào)試其實(shí)挺困難的。經(jīng)過實(shí)踐,希望實(shí)現(xiàn)如下三點(diǎn):

  • 能隨時(shí)查看最新固定條數(shù)的Kafka數(shù)據(jù)
  • 調(diào)試結(jié)果(sink)能打印在web控制臺(tái)
  • 流程序能自動(dòng)推測json schema(現(xiàn)在spark是不行的)

實(shí)現(xiàn)這三個(gè)點(diǎn)之后,我發(fā)現(xiàn)調(diào)試確實(shí)就變得簡單很多了。

流程

首先我新建了一個(gè)kaf_write.mlsql,里面方便我往Kafka里寫數(shù)據(jù):

set abc='''
{ "x": 100, "y": 200, "z": 200 ,"dataType":"A group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
{ "x": 120, "y": 100, "z": 260 ,"dataType":"B group"}
''';
load jsonStr.`abc` as table1;

select to_json(struct(*)) as value from table1 as table2;
save append table2 as kafka.`wow` where 
kafka.bootstrap.servers="127.0.0.1:9092";

這樣我每次運(yùn)行,數(shù)據(jù)就能寫入到Kafka.

接著,我寫完后,需要看看數(shù)據(jù)是不是真的都寫進(jìn)去了,寫成了什么樣子:

!kafkaTool sampleData 10 records from "127.0.0.1:9092" wow;

這句話表示,我要采樣Kafka 10條Kafka數(shù)據(jù),該Kafka的地址為127.0.0.1:9092,主題為wow.運(yùn)行結(jié)果如下:

沒有什么問題。接著我寫一個(gè)非常簡單的流式程序:

-- the stream name, should be uniq.
set streamName="streamExample";

-- use kafkaTool to infer schema from kafka
!kafkaTool registerSchema 2 records from "127.0.0.1:9092" wow;


load kafka.`wow` options 
kafka.bootstrap.servers="127.0.0.1:9092"
as newkafkatable1;


select * from newkafkatable1
as table21;


-- print in webConsole instead of terminal console.
save append table21 
as webConsole.`` 
options mode="Append"
and duration="15"
and checkpointLocation="/tmp/s-cpl4";

運(yùn)行結(jié)果如下:

在終端我們也可以看到實(shí)時(shí)效果了。

補(bǔ)充

當(dāng)然,MLSQL Stack 還有對流還有兩個(gè)特別好地方,第一個(gè)是你可以對流的事件設(shè)置http協(xié)議的callback,以及對流的處理結(jié)果再使用批SQL進(jìn)行處理,最后入庫。參看如下腳本:

-- the stream name, should be uniq.
set streamName="streamExample";


-- mock some data.
set data='''
{"key":"yes","value":"no","topic":"test","partition":0,"offset":0,"timestamp":"2008-01-24 18:01:01.001","timestampType":0}
{"key":"yes","value":"no","topic":"test","partition":0,"offset":1,"timestamp":"2008-01-24 18:01:01.002","timestampType":0}
{"key":"yes","value":"no","topic":"test","partition":0,"offset":2,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
{"key":"yes","value":"no","topic":"test","partition":0,"offset":3,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
{"key":"yes","value":"no","topic":"test","partition":0,"offset":4,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
{"key":"yes","value":"no","topic":"test","partition":0,"offset":5,"timestamp":"2008-01-24 18:01:01.003","timestampType":0}
''';

-- load data as table
load jsonStr.`data` as datasource;

-- convert table as stream source
load mockStream.`datasource` options 
stepSizeRange="0-3"
as newkafkatable1;

-- aggregation 
select cast(value as string) as k from newkafkatable1
as table21;


!callback post "http://127.0.0.1:9002/api_v1/test" when "started,progress,terminated";
-- output the the result to console.


save append table21 
as custom.`` 
options mode="append"
and duration="15"
and sourceTable="jack"
and code='''
select count(*) as c from jack as newjack;
save append newjack as parquet.`/tmp/jack`; 
'''
and checkpointLocation="/tmp/cpl15";

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MySQL數(shù)據(jù)庫中表的操作詳解

    MySQL數(shù)據(jù)庫中表的操作詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL數(shù)據(jù)庫中表常用的一些操作方法,文中的示例代碼講解詳細(xì),?對我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-08-08
  • Mysql臟頁flush及收縮表空間原理解析

    Mysql臟頁flush及收縮表空間原理解析

    這篇文章主要介紹了Mysql臟頁flush及收縮表空間原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • mysql大表復(fù)制的具體實(shí)現(xiàn)

    mysql大表復(fù)制的具體實(shí)現(xiàn)

    MySQL大表復(fù)制是指將一個(gè)數(shù)據(jù)庫中的大表復(fù)制到另一個(gè)數(shù)據(jù)庫中,以實(shí)現(xiàn)數(shù)據(jù)的備份或數(shù)據(jù)遷移的目的,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 連接MySql速度慢的解決方法(skip-name-resolve)

    連接MySql速度慢的解決方法(skip-name-resolve)

    這篇文章主要介紹了連接MySql速度慢的解決方法(skip-name-resolve),需要的朋友可以參考下
    2015-09-09
  • mysql日期函數(shù)用法大全

    mysql日期函數(shù)用法大全

    日期函數(shù)在實(shí)際應(yīng)用中可以幫助你輕松處理和操作日期時(shí)間數(shù)據(jù),使得數(shù)據(jù)庫操作更為靈活和便捷,本文主要介紹了mysql日期函數(shù)用法大全,感興趣的可以了解一下
    2024-05-05
  • MySQL讀寫分離原理詳細(xì)解析

    MySQL讀寫分離原理詳細(xì)解析

    這篇文章主要介紹了MySQL讀寫分離原理詳細(xì)解析,讀寫分離是基于主從復(fù)制來實(shí)現(xiàn)的,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署

    MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署

    這篇文章主要為大家介紹了MySQL運(yùn)維實(shí)戰(zhàn)使用RPM進(jìn)行安裝部署實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • SQL實(shí)現(xiàn)LeetCode(175.聯(lián)合兩表)

    SQL實(shí)現(xiàn)LeetCode(175.聯(lián)合兩表)

    這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(175.聯(lián)合兩表),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 用MySQL創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫表代碼

    用MySQL創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)庫表代碼

    了解了一些最基本的操作命令后,我們再來學(xué)習(xí)如何創(chuàng)建一個(gè)數(shù)據(jù)庫和數(shù)據(jù)庫表。
    2008-10-10
  • linux mysql5.6版本的安裝配置過程

    linux mysql5.6版本的安裝配置過程

    mysql官網(wǎng)開始發(fā)布相關(guān)的5.6系列的各個(gè)版本,對于mysql5.6系列的版本對一起的版本進(jìn)行了全局性的細(xì)節(jié)性加強(qiáng)
    2013-06-06

最新評論

都江堰市| 雷山县| 万山特区| 台前县| 开封县| 镇沅| 华宁县| 大厂| 富顺县| 垣曲县| 胶南市| 辽中县| 鹿邑县| 古蔺县| 枝江市| 宜黄县| 丹巴县| 富平县| 新营市| 宜州市| 忻城县| 长葛市| 英山县| 南川市| 新昌县| 惠安县| 广平县| 南充市| 建平县| 白河县| 应城市| 广西| 沾益县| 东宁县| 措美县| 中山市| 嘉荫县| 日喀则市| 武鸣县| 乐都县| 兰考县|