{"id":46925,"date":"2023-07-06T06:33:28","date_gmt":"2023-10-02T23:01:02","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/"},"modified":"2024-04-30T12:14:36","modified_gmt":"2024-04-30T04:14:36","slug":"%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/","title":{"rendered":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09"},"content":{"rendered":"<h1>\u76ee\u6807<\/h1>\n<p>\u7ee7\u7eed\u524d\u534a\u90e8\u5206\uff0c\u8bd5\u7740\u5b9e\u65bd\u4ee5\u4e0b\u5728\u4e0b\u8ff0\u6765\u6e90\u4e2d\u7684\u201c\u4f7f\u7528\u5d4c\u5957\u6a21\u5f0f\uff08STRUCT\uff09\u5728 ksqlDB \u4e2d\u201d\u7684\u90e8\u5206\u3002\uff08\u7531\u4e8e\u90a3\u4e2a\u94fe\u63a5\u5df2\u7ecf\u8fc7\u65f6\uff0c\u6211\u5df2\u7ecf\u7ecf\u5386\u4e86\u65e0\u6cd5\u5f62\u5bb9\u7684\u75db\u82e6\uff0c\u5168\u90e8\u90fd\u57cb\u846c\u5728\u9ed1\u6697\u4e4b\u4e2d\u4e86\u3002\uff09<\/p>\n<p>\u4f7f\u7528ksqlDB\uff08\u672c\u5730\uff09\u9488\u5bf9Apache Kafka\u00ae\u7f16\u5199\u6d41\u67e5\u8be2\u3002<\/p>\n<h1>\u76f8\u5173\u7684Qiita\u6587\u7ae0<\/h1>\n<p>1. \u5c1d\u8bd5\u8fdb\u884cksqlDB\u5feb\u901f\u5165\u95e8<br \/>\n2. \u521b\u5efa\u4f7f\u7528ksqlDB\u7684\u6d41\u67e5\u8be2\uff08\u524d\u534a\u90e8\u5206\uff09<br \/>\n3. \u521b\u5efa\u4f7f\u7528ksqlDB\u7684\u6d41\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09<br \/>\n4. \u5728Kafka\u4e0a\u4f7f\u7528ksql\u5904\u7406MySQL\u8868\u7684\u66f4\u65b0\u4fe1\u606f<\/p>\n<h1>\u4f7f\u7528ksqlDB\u521b\u5efa\u6d41\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09\u3002<\/h1>\n<h2>\u5728 ksqlDB \u4e2d\u4f7f\u7528\u5d4c\u5957\u6a21\u5f0f\uff08STRUCT\uff09<\/h2>\n<p>\u8fd9\u6b21Stream\/Table\u7684\u539f\u59cb\u6570\u636e\u6e90\u662fksql-datagen\u7684\u4e00\u4e2a\u9884\u8bbe\u8ba2\u5355\u3002<\/p>\n<pre class=\"post-pre\"><code>bin\/ksql-datagen quickstart=orders format=avro topic=orders msgRate=1\r\n<\/code><\/pre>\n<p>ksql-datagen\u751f\u6210\u7684\u65e5\u5fd7\u8f93\u51fa\u5982\u4e0b\uff1a<\/p>\n<pre class=\"post-pre\"><code>[0] --&gt; ([ 1504174143763L | 0 | 'Item_878' | 4.036972663514597 | Struct{city=City_67,state=State_25,zipcode=71437} ]) ts:1635225586518\r\n[1] --&gt; ([ 1509355271065L | 1 | 'Item_670' | 9.154643686738641 | Struct{city=City_32,state=State_25,zipcode=81180} ]) ts:1635225586796\r\n[2] --&gt; ([ 1487743369101L | 2 | 'Item_682' | 9.913937197671148 | Struct{city=City_99,state=State_25,zipcode=99831} ]) ts:1635225587794\r\n[3] --&gt; ([ 1514028266544L | 3 | 'Item_915' | 7.027966334147111 | Struct{city=City_68,state=State_78,zipcode=47239} ]) ts:1635225588795\r\n[4] --&gt; ([ 1500111527090L | 4 | 'Item_533' | 9.268916469646818 | Struct{city=City_71,state=State_72,zipcode=15953} ]) ts:1635225589795\r\n[5] --&gt; ([ 1492193039132L | 5 | 'Item_294' | 7.781222807562362 | Struct{city=City_46,state=State_66,zipcode=29977} ]) ts:1635225590795\r\n[6] --&gt; ([ 1495043772684L | 6 | 'Item_322' | 1.2480686742580827 | Struct{city=City_86,state=State_69,zipcode=18948} ]) ts:1635225591795\r\n[7] --&gt; ([ 1505289388278L | 7 | 'Item_233' | 0.15332131177604907 | Struct{city=City_29,state=State_98,zipcode=64327} ]) ts:1635225592795\r\n[8] --&gt; ([ 1515383680311L | 8 | 'Item_521' | 6.810614048446687 | Struct{city=City_63,state=State_28,zipcode=32247} ]) ts:1635225593795\r\n[9] --&gt; ([ 1515133573377L | 9 | 'Item_981' | 4.464408695223682 | Struct{city=City_81,state=State_13,zipcode=87019} ]) ts:1635225594795\r\n[10] --&gt; ([ 1506411308569L | 10 | 'Item_366' | 4.2732457996601845 | Struct{city=City_29,state=State_95,zipcode=93103} ]) ts:1635225595795\r\n[11] --&gt; ([ 1492697874803L | 11 | 'Item_688' | 4.155429455625357 | Struct{city=City_77,state=State_47,zipcode=48054} ]) ts:1635225596795\r\n[12] --&gt; ([ 1498066277947L | 12 | 'Item_438' | 8.852426005487066 | Struct{city=City_35,state=State_52,zipcode=36616} ]) ts:1635225597795\r\n<\/code><\/pre>\n<p>\u901a\u8fc7Schema Registry\u7684\u65e5\u5fd7\u67e5\u627e\u4e3b\u9898\u540d\u79f0\uff0c\u7136\u540e\u4f7f\u7528\u4ee5\u4e0bAPI\u6765\u67e5\u627e\u67b6\u6784\u3002\u6211\u5df2\u7ecf\u5411\u5148\u8f88\u5b66\u4e60\u4e86jq\u7684\u4f7f\u7528\u65b9\u6cd5\u3002<\/p>\n<pre class=\"post-pre\"><code>curl -X GET http:\/\/localhost:8081\/subjects\/orders-value\/versions\/1 | jq .schema | sed -e 's\/^\"\/\/' -e 's\/\"$\/\/' -e 's\/\\\\\/\/g' | jq .\r\n<\/code><\/pre>\n<p>\u6839\u636eAvro Schema\u7684\u7ed3\u6784\uff0c\u53ef\u4ee5\u770b\u5230KsqlDataSourceSchema\u8bb0\u5f55\u4e2d\u6709\u4e00\u4e2a\u540d\u4e3aKsqlDataSourceSchema_address\u7684\u8bb0\u5f55\uff0c\u5b83\u4f3c\u4e4e\u5305\u542bcity\u3001state\u548czipcode\u8fd9\u4e9b\u5b57\u6bb5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"record\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"KsqlDataSourceSchema\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"namespace\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"io.confluent.ksql.avro_schemas\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"fields\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ordertime\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"s2\">\"long\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"orderid\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"s2\">\"int\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"itemid\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"s2\">\"string\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"orderunits\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"s2\">\"double\"<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"address\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n        <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"record\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"KsqlDataSourceSchema_address\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"fields\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n            <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"city\"<\/span><span class=\"p\">,<\/span>\r\n              <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s2\">\"string\"<\/span>\r\n              <span class=\"p\">],<\/span>\r\n              <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n            <span class=\"p\">},<\/span>\r\n            <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"state\"<\/span><span class=\"p\">,<\/span>\r\n              <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s2\">\"string\"<\/span>\r\n              <span class=\"p\">],<\/span>\r\n              <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n            <span class=\"p\">},<\/span>\r\n            <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"zipcode\"<\/span><span class=\"p\">,<\/span>\r\n              <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s2\">\"null\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"s2\">\"long\"<\/span>\r\n              <span class=\"p\">],<\/span>\r\n              <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n            <span class=\"p\">}<\/span>\r\n          <span class=\"p\">]<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">],<\/span>\r\n      <span class=\"nl\">\"default\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">null<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u901a\u8fc7ksqlDB CLI\u7684PRINT\u547d\u4ee4\u6765\u89c2\u5bdf\u6d88\u606f\u3002\u53ef\u4ee5\u770b\u5230\u6d88\u606f\u952e\u4e2d\u5305\u542b\u4e86orderid\u7684\u539f\u59cb\u503c\uff0c\u5e76\u4e14\u5728address\u5143\u7d20\u4e2d\u5d4c\u5957\u4e86city\u3001state\u548czipcode\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"err\">Key<\/span> <span class=\"err\">format:<\/span> <span class=\"err\">KAFKA_INT<\/span> <span class=\"err\">or<\/span> <span class=\"err\">KAFKA_STRING<\/span>\r\n<span class=\"err\">Value<\/span> <span class=\"err\">format:<\/span> <span class=\"err\">AVRO<\/span>\r\n<span class=\"err\">rowtime:<\/span> <span class=\"mi\">2021<\/span><span class=\"err\">\/<\/span><span class=\"mi\">10<\/span><span class=\"err\">\/<\/span><span class=\"mi\">26<\/span> <span class=\"mi\">05<\/span><span class=\"err\">:<\/span><span class=\"mi\">19<\/span><span class=\"err\">:<\/span><span class=\"mf\">46.518<\/span> <span class=\"err\">Z,<\/span> <span class=\"err\">key:<\/span> <span class=\"mi\">0<\/span><span class=\"err\">,<\/span> <span class=\"err\">value:<\/span> <span class=\"p\">{<\/span><span class=\"nl\">\"ordertime\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1504174143763<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"orderid\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"itemid\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Item_878\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"orderunits\"<\/span><span class=\"p\">:<\/span> <span class=\"mf\">4.036972663514597<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"address\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span><span class=\"nl\">\"city\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"City_67\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"state\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"State_25\"<\/span><span class=\"p\">,<\/span> <span class=\"nl\">\"zipcode\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">71437<\/span><span class=\"p\">}}<\/span><span class=\"err\">,<\/span> <span class=\"err\">partition:<\/span> <span class=\"mi\">0<\/span>\r\n<span class=\"err\">...<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u4e0b\u4e00\u4e2a\u8981\u53d1\u5e03\u7684CREATE\u4e2d\uff0c\u6211\u5bf9\u5176\u542b\u4e49\u611f\u5230\u56f0\u60d1\uff0c\u4f46\u6211\u7406\u89e3\u8fd9\u53ea\u662f\u4e00\u4e2a\u793a\u4f8b\uff0c\u5b83\u5c55\u793a\u4e86\u5982\u4f55\u624b\u52a8\u58f0\u660e\u5d4c\u5957\u7ed3\u6784\u7684\u5730\u5740\u5143\u7d20\uff0c\u800c\u6ca1\u6709\u5229\u7528\u5230\u5b9d\u8d35\u7684Avro Schema\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">ORDERS<\/span>\r\n  <span class=\"p\">(<\/span>\r\n    <span class=\"n\">ORDERTIME<\/span> <span class=\"n\">BGINT<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"n\">ORDERID<\/span> <span class=\"nb\">INT<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"n\">ITEMID<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"n\">ORDERUNITS<\/span> <span class=\"nb\">DOUBLE<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"n\">ADDRESS<\/span> <span class=\"n\">STRUCT<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">CITY<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span> <span class=\"k\">STATE<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span> <span class=\"n\">ZIPCODE<\/span> <span class=\"nb\">BIGINT<\/span><span class=\"o\">&gt;<\/span>\r\n  <span class=\"p\">)<\/span>\r\n   <span class=\"k\">WITH<\/span> <span class=\"p\">(<\/span><span class=\"n\">KAFKA_TOPIC<\/span><span class=\"o\">=<\/span><span class=\"s1\">'orders'<\/span><span class=\"p\">,<\/span> <span class=\"n\">VALUE_FORMAT<\/span><span class=\"o\">=<\/span><span class=\"s1\">'avro'<\/span><span class=\"p\">);<\/span>\r\n<\/code><\/pre>\n<p>\u63cf\u8ff0\u7684\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE ORDERS;\r\n\r\nName                 : ORDERS\r\n Field      | Type\r\n----------------------------------------------------------------------------------\r\n ORDERTIME  | BIGINT\r\n ORDERID    | INTEGER\r\n ITEMID     | VARCHAR(STRING)\r\n ORDERUNITS | DOUBLE\r\n ADDRESS    | STRUCT&lt;CITY VARCHAR(STRING), STATE VARCHAR(STRING), ZIPCODE BIGINT&gt;\r\n----------------------------------------------------------------------------------\r\n<\/code><\/pre>\n<p>\u5b9e\u9645\u4e0a\uff0c\u60a8\u8fd8\u53ef\u4ee5\u76f4\u63a5\u4eceAvro Schema\u8bfb\u53d6\u6a21\u5f0f\u7ed3\u6784\u3002\u7531\u4e8e\u662f\u6d41\u5f0f\u7684\uff0c\u56e0\u6b64\u5e76\u4e0d\u603b\u8981\u6c42\u6307\u5b9a\u952e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">ORDERS<\/span> <span class=\"k\">WITH<\/span> <span class=\"p\">(<\/span><span class=\"n\">KAFKA_TOPIC<\/span><span class=\"o\">=<\/span><span class=\"s1\">'orders'<\/span><span class=\"p\">,<\/span> <span class=\"n\">VALUE_FORMAT<\/span><span class=\"o\">=<\/span><span class=\"s1\">'avro'<\/span><span class=\"p\">);<\/span>\r\n<\/code><\/pre>\n<p>\u7528\u8fd9\u4e2a\u65b9\u6cd5\u521b\u5efa\u7684\u65f6\u5019\uff0c\u5f53\u8fdb\u884cDESCRIBE\u65f6\uff0c\u80fd\u591f\u6b63\u786e\u5730\u4eceAVRO Schema\u4e2d\u63d0\u53d6\u5d4c\u5957\u7ed3\u6784\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE ORDERS;\r\n\r\nName                 : ORDERS\r\n Field      | Type\r\n----------------------------------------------------------------------------------\r\n ORDERTIME  | BIGINT\r\n ORDERID    | INTEGER\r\n ITEMID     | VARCHAR(STRING)\r\n ORDERUNITS | DOUBLE\r\n ADDRESS    | STRUCT&lt;CITY VARCHAR(STRING), STATE VARCHAR(STRING), ZIPCODE BIGINT&gt;\r\n----------------------------------------------------------------------------------\r\nFor runtime statistics and query details run: DESCRIBE &lt;Stream,Table&gt; EXTENDED;\r\n<\/code><\/pre>\n<p>Stream\u7684\u9009\u62e9\u64cd\u4f5c\u4e5f\u6210\u529f\u4e86\u3002\u5f53\u60f3\u8981\u6536\u96c6\u5d4c\u5957\u5b50\u5143\u7d20\u65f6\uff0c\u5728ASCII\u827a\u672f\u7bad\u5934-&gt;\u4e4b\u524d\u52a0\u4e0a\u5b83\u662f\u5f88\u6709\u8da3\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">SELECT<\/span> <span class=\"n\">ORDERID<\/span><span class=\"p\">,<\/span> <span class=\"n\">ADDRESS<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">CITY<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">ORDERS<\/span> <span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span> <span class=\"k\">LIMIT<\/span> <span class=\"mi\">5<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>+---------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+\r\n|ORDERID                                                                                |CITY                                                                                   |\r\n+---------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------+\r\n|0                                                                                      |City_75                                                                                |\r\n|1                                                                                      |City_29                                                                                |\r\n|2                                                                                      |City_75                                                                                |\r\n|3                                                                                      |City_24                                                                                |\r\n|4                                                                                      |City_19                                                                                |\r\nLimit Reached\r\nQuery terminated\r\n<\/code><\/pre>\n<h2>\u5c06\u4ee5\u4e0b\u5185\u5bb9\u63d2\u5165\u5230\u6570\u636e\u5e93\u4e2d\uff1a<\/h2>\n<p>\u6839\u636e\u60ef\u4f8b\uff0c\u4f7f\u7528ksql-datagen\u5de5\u5177\u521b\u5efa\u4e24\u4e2a\u57fa\u4e8e\u9884\u8bbeorders\u7684Topic\u3002<\/p>\n<pre class=\"post-pre\"><code>bin\/ksql-datagen quickstart=orders format=json topic=orders_local msgRate=2\r\nbin\/ksql-datagen quickstart=orders format=json topic=orders_3rdparty msgRate=2\r\n<\/code><\/pre>\n<p>\u4f7f\u7528ksqlDB CLI\u67e5\u770b\u5185\u5bb9\u65f6\uff0c\u53ef\u4ee5\u770b\u5230\u5b83\u4ee5JSON\u683c\u5f0f\u5b58\u50a8\u3002\uff08\u867d\u7136\u548cAvro\u5916\u89c2\u76f8\u540c\uff09<\/p>\n<pre class=\"post-pre\"><code><span class=\"err\">ksql&gt;<\/span> <span class=\"err\">PRINT<\/span> <span class=\"err\">orders_local<\/span> <span class=\"err\">FROM<\/span> <span class=\"err\">BEGINNING;<\/span>\r\n<span class=\"err\">Key<\/span> <span class=\"err\">format:<\/span> <span class=\"err\">KAFKA_INT<\/span> <span class=\"err\">or<\/span> <span class=\"err\">KAFKA_STRING<\/span>\r\n<span class=\"err\">Value<\/span> <span class=\"err\">format:<\/span> <span class=\"err\">JSON<\/span> <span class=\"err\">or<\/span> <span class=\"err\">KAFKA_STRING<\/span>\r\n<span class=\"err\">rowtime:<\/span> <span class=\"mi\">2021<\/span><span class=\"err\">\/<\/span><span class=\"mi\">10<\/span><span class=\"err\">\/<\/span><span class=\"mi\">26<\/span> <span class=\"mi\">05<\/span><span class=\"err\">:<\/span><span class=\"mi\">37<\/span><span class=\"err\">:<\/span><span class=\"mf\">41.369<\/span> <span class=\"err\">Z,<\/span> <span class=\"err\">key:<\/span> <span class=\"mi\">0<\/span><span class=\"err\">,<\/span> <span class=\"err\">value:<\/span> <span class=\"p\">{<\/span><span class=\"nl\">\"ordertime\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">1503864575926<\/span><span class=\"p\">,<\/span><span class=\"nl\">\"orderid\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"nl\">\"itemid\"<\/span><span class=\"p\">:<\/span><span class=\"s2\">\"Item_434\"<\/span><span class=\"p\">,<\/span><span class=\"nl\">\"orderunits\"<\/span><span class=\"p\">:<\/span><span class=\"mf\">4.2864657664768755<\/span><span class=\"p\">,<\/span><span class=\"nl\">\"address\"<\/span><span class=\"p\">:{<\/span><span class=\"nl\">\"city\"<\/span><span class=\"p\">:<\/span><span class=\"s2\">\"City_69\"<\/span><span class=\"p\">,<\/span><span class=\"nl\">\"state\"<\/span><span class=\"p\">:<\/span><span class=\"s2\">\"State_35\"<\/span><span class=\"p\">,<\/span><span class=\"nl\">\"zipcode\"<\/span><span class=\"p\">:<\/span><span class=\"mi\">46591<\/span><span class=\"p\">}}<\/span><span class=\"err\">,<\/span> <span class=\"err\">partition:<\/span> <span class=\"mi\">0<\/span>\r\n<span class=\"err\">....<\/span>\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u521b\u5efa\u4e0e\u8fd9\u4e9b\u4e3b\u9898\u76f8\u5173\u7684\u6d41\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">ORDERS_SRC_LOCAL<\/span>\r\n <span class=\"p\">(<\/span>\r\n   <span class=\"n\">ORDERTIME<\/span> <span class=\"nb\">BIGINT<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ORDERID<\/span> <span class=\"nb\">INT<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ITEMID<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ORDERUNITS<\/span> <span class=\"nb\">DOUBLE<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ADDRESS<\/span> <span class=\"n\">STRUCT<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">CITY<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span> <span class=\"k\">STATE<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span> <span class=\"n\">ZIPCODE<\/span> <span class=\"nb\">BIGINT<\/span><span class=\"o\">&gt;<\/span>\r\n <span class=\"p\">)<\/span>\r\n  <span class=\"k\">WITH<\/span> <span class=\"p\">(<\/span><span class=\"n\">KAFKA_TOPIC<\/span><span class=\"o\">=<\/span><span class=\"s1\">'orders_local'<\/span><span class=\"p\">,<\/span> <span class=\"n\">VALUE_FORMAT<\/span><span class=\"o\">=<\/span><span class=\"s1\">'JSON'<\/span><span class=\"p\">);<\/span>\r\n\r\n<span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">ORDERS_SRC_3RDPARTY<\/span>\r\n <span class=\"p\">(<\/span>\r\n   <span class=\"n\">ORDERTIME<\/span> <span class=\"nb\">BIGINT<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ORDERID<\/span> <span class=\"nb\">INT<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ITEMID<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ORDERUNITS<\/span> <span class=\"nb\">DOUBLE<\/span><span class=\"p\">,<\/span>\r\n   <span class=\"n\">ADDRESS<\/span> <span class=\"n\">STRUCT<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">CITY<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span> <span class=\"k\">STATE<\/span> <span class=\"n\">STRING<\/span><span class=\"p\">,<\/span> <span class=\"n\">ZIPCODE<\/span> <span class=\"nb\">BIGINT<\/span><span class=\"o\">&gt;<\/span>\r\n <span class=\"p\">)<\/span>\r\n  <span class=\"k\">WITH<\/span> <span class=\"p\">(<\/span><span class=\"n\">KAFKA_TOPIC<\/span><span class=\"o\">=<\/span><span class=\"s1\">'orders_3rdparty'<\/span><span class=\"p\">,<\/span> <span class=\"n\">VALUE_FORMAT<\/span><span class=\"o\">=<\/span><span class=\"s1\">'JSON'<\/span><span class=\"p\">);<\/span>\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u4e24\u4e2aStream\u90fd\u53ef\u4ee5\u901a\u8fc7SELECT\u67e5\u770b\u5185\u5bb9\uff0c\u6240\u4ee5\u4f3c\u4e4e\u6ca1\u6709\u95ee\u9898\u3002\u63a5\u4e0b\u6765\uff0c\u4eceStream\u7684ORDERS_SRC_LOCAL\u521b\u5efaStream\u7684ALL_ORDERS\u3002\u5728\u6b64\u8fc7\u7a0b\u4e2d\uff0c\u6dfb\u52a0SRC\u5217\u548c\u5305\u542b\u201cLOCAL\u201d\u5b57\u7b26\u4e32\u7684\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">CREATE<\/span> <span class=\"n\">STREAM<\/span> <span class=\"n\">ALL_ORDERS<\/span> <span class=\"k\">AS<\/span> <span class=\"k\">SELECT<\/span> <span class=\"s1\">'LOCAL'<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">SRC<\/span><span class=\"p\">,<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">ORDERS_SRC_LOCAL<\/span> <span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u63cf\u8ff0\u5167\u5bb9\u88ab\u641c\u5c0b\u5f8c\uff0c\u53ef\u4ee5\u770b\u51fa\u6dfb\u52a0\u4e86SRC\u5217\u3002<\/p>\n<pre class=\"post-pre\"><code>ksql&gt; DESCRIBE ALL_ORDERS;\r\n\r\nName                 : ALL_ORDERS\r\n Field      | Type\r\n----------------------------------------------------------------------------------\r\n SRC        | VARCHAR(STRING)\r\n ORDERTIME  | BIGINT\r\n ORDERID    | INTEGER\r\n ITEMID     | VARCHAR(STRING)\r\n ORDERUNITS | DOUBLE\r\n ADDRESS    | STRUCT&lt;CITY VARCHAR(STRING), STATE VARCHAR(STRING), ZIPCODE BIGINT&gt;\r\n----------------------------------------------------------------------------------\r\nFor runtime statistics and query details run: DESCRIBE &lt;Stream,Table&gt; EXTENDED;\r\n<\/code><\/pre>\n<p>\u4e0b\u4e00\u6b65\uff0c\u4f7f\u7528INSERT\u5c06ORDERS_3RDPARTY\u63d2\u5165\u5230\u5df2\u521b\u5efa\u7684Stream ALL_ORDERS\u4e2d\u3002SELECT\u4f5c\u4e3aINSERT\u7684\u53c2\u6570\u8ba9\u4eba\u611f\u5230\u975e\u5e38\u4e0d\u8212\u670d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">INSERT<\/span> <span class=\"k\">INTO<\/span> <span class=\"n\">ALL_ORDERS<\/span> <span class=\"k\">SELECT<\/span> <span class=\"s1\">'3RD PARTY'<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">SRC<\/span><span class=\"p\">,<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">ORDERS_SRC_3RDPARTY<\/span> <span class=\"n\">EMIT<\/span> <span class=\"n\">CHANGES<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<p>\u63cf\u8ff0\uff08DESCRIBE\uff09\u5e76\u6ca1\u6709\u7279\u522b\u6539\u53d8\u7ed3\u679c\u3002\u7136\u800c\uff0c\u5982\u679c\u9009\u62e9\uff08SELECT\uff09ALL_ORDERS\uff0c\u53ef\u4ee5\u770b\u5230\u4e24\u4e2a\u6d41\uff08Stream\uff09\u88ab\u5408\u5e76\u3002<\/p>\n<pre class=\"post-pre\"><code>+---------------------------+---------------------------+---------------------------+---------------------------+---------------------------+---------------------------+\r\n|SRC                        |ORDERTIME                  |ORDERID                    |ITEMID                     |ORDERUNITS                 |ADDRESS                    |\r\n+---------------------------+---------------------------+---------------------------+---------------------------+---------------------------+---------------------------+\r\n|LOCAL                      |1491607148202              |0                          |Item_898                   |2.295635561371047          |{CITY=City_75, STATE=State_|\r\n|                           |                           |                           |                           |                           |51, ZIPCODE=99961}         |\r\n|LOCAL                      |1502213077209              |1                          |Item_140                   |2.5099291074319723         |{CITY=City_31, STATE=State_|\r\n|                           |                           |                           |                           |                           |85, ZIPCODE=60896}         |\r\n|LOCAL                      |1499994360002              |2                          |Item_389                   |0.2058594684735549         |{CITY=City_87, STATE=State_|\r\n|                           |                           |                           |                           |                           |73, ZIPCODE=21220}         |\r\n|LOCAL                      |1496100207758              |3                          |Item_847                   |7.477474294032186          |{CITY=City_86, STATE=State_|\r\n|                           |                           |                           |                           |                           |32, ZIPCODE=22647}         |\r\n|LOCAL                      |1505599782301              |4                          |Item_315                   |8.881110008286903          |{CITY=City_96, STATE=State_|\r\n|                           |                           |                           |                           |                           |92, ZIPCODE=55875}         |\r\n|LOCAL                      |1513625276385              |5                          |Item_125                   |1.951656779215225          |{CITY=City_68, STATE=State_|\r\n|                           |                           |                           |                           |                           |48, ZIPCODE=48094}         |\r\n|3RD PARTY                  |1516534876769              |0                          |Item_276                   |9.00734689040726           |{CITY=City_79, STATE=State_|\r\n|                           |                           |                           |                           |                           |69, ZIPCODE=90948}         |\r\n|3RD PARTY                  |1491684084899              |1                          |Item_724                   |9.804594098542523          |{CITY=City_85, STATE=State_|\r\n|                           |                           |                           |                           |                           |44, ZIPCODE=41963}         |\r\n|LOCAL                      |1493513975029              |6                          |Item_364                   |0.3857448600632095         |{CITY=City_83, STATE=State_|\r\n|                           |                           |                           |                           |                           |48, ZIPCODE=91698}         |\r\n|3RD PARTY                  |1510339405388              |2                          |Item_184                   |5.594021107440936          |{CITY=City_56, STATE=State_|\r\n<\/code><\/pre>\n<h1>\u603b\u7ed3(\u4e0b\u534a\u90e8\u5206)<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30cd\u30b9\u30c8\u3055\u308c\u305f\u5b50\u69cb\u9020\u306fCREATE\u6642\u306e\u5217\u540d\u3068\u3057\u3066ADDRESS STRUCT\u306e\u3088\u3046STRUCT&lt;&gt;\u3092\u7528\u3044\u3066\u6307\u5b9a\u3059\u308b\u304c\u3001Avro Shcema\u5229\u7528\u306a\u3089\u305d\u306e\u307e\u307e\u5f15\u5f35\u3063\u3066\u304d\u3066\u3082\u3088\u3044\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30cd\u30b9\u30c8\u3055\u308c\u305f\u5b50\u69cb\u9020\u3092SELECT\u3059\u308b\u969b\u306f\u5217\u540d\u3068\u3057\u3066ADDRESS-&gt;CITY\u306e\u3088\u3046\u306b-&gt;\u3092\u7528\u3044\u3066\u6307\u5b9a\u3059\u308b\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">INSERT INTO + SELECT\u306b\u3088\u3063\u3066\u3001\u3042\u308bStream\u306b\u5225\u306eStream\u3092\u7d71\u5408\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u308b(\u304c\u8868\u69cb\u9020\u306e\u4e00\u81f4\u304c\u524d\u63d0\u306a\u3093\u3060\u308d\u3046\u304b)\u3002<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u6807 \u7ee7\u7eed\u524d\u534a\u90e8\u5206\uff0c\u8bd5\u7740\u5b9e\u65bd\u4ee5\u4e0b\u5728\u4e0b\u8ff0\u6765\u6e90\u4e2d\u7684\u201c\u4f7f\u7528\u5d4c\u5957\u6a21\u5f0f\uff08STRUCT\uff09\u5728 ksqlDB \u4e2d\u201d\u7684\u90e8\u5206\u3002\uff08\u7531 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-46925","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09\" \/>\n<meta property=\"og:description\" content=\"\u76ee\u6807 \u7ee7\u7eed\u524d\u534a\u90e8\u5206\uff0c\u8bd5\u7740\u5b9e\u65bd\u4ee5\u4e0b\u5728\u4e0b\u8ff0\u6765\u6e90\u4e2d\u7684\u201c\u4f7f\u7528\u5d4c\u5957\u6a21\u5f0f\uff08STRUCT\uff09\u5728 ksqlDB \u4e2d\u201d\u7684\u90e8\u5206\u3002\uff08\u7531 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-02T23:01:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T04:14:36+00:00\" \/>\n<meta name=\"author\" content=\"\u6e05, \u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/\",\"name\":\"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-10-02T23:01:02+00:00\",\"dateModified\":\"2024-04-30T04:14:36+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\",\"name\":\"\u6e05, \u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09","og_description":"\u76ee\u6807 \u7ee7\u7eed\u524d\u534a\u90e8\u5206\uff0c\u8bd5\u7740\u5b9e\u65bd\u4ee5\u4e0b\u5728\u4e0b\u8ff0\u6765\u6e90\u4e2d\u7684\u201c\u4f7f\u7528\u5d4c\u5957\u6a21\u5f0f\uff08STRUCT\uff09\u5728 ksqlDB \u4e2d\u201d\u7684\u90e8\u5206\u3002\uff08\u7531 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528-ksqldb-\u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-10-02T23:01:02+00:00","article_modified_time":"2024-04-30T04:14:36+00:00","author":"\u6e05, \u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u5b87","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/","name":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-10-02T23:01:02+00:00","dateModified":"2024-04-30T04:14:36+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528 ksqlDB \u521b\u5efa\u6d41\u5f0f\u67e5\u8be2\uff08\u540e\u534a\u90e8\u5206\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e","name":"\u6e05, \u5b87","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","caption":"\u6e05, \u5b87"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8-ksqldb-%e5%88%9b%e5%bb%ba%e6%b5%81%e5%bc%8f%e6%9f%a5%e8%af%a2%ef%bc%88%e5%90%8e%e5%8d%8a%e9%83%a8%e5%88%86%ef%bc%89\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=46925"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46925\/revisions"}],"predecessor-version":[{"id":91852,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/46925\/revisions\/91852"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=46925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=46925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=46925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}