{"id":19803,"date":"2024-03-15T19:28:39","date_gmt":"2024-03-15T19:28:39","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/"},"modified":"2024-03-21T16:34:26","modified_gmt":"2024-03-21T16:34:26","slug":"how-to-read-kafka-data-for-statistics-with-flink","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/","title":{"rendered":"How to read Kafka data for statistics with Flink?"},"content":{"rendered":"<p>In Flink, we can use FlinkKafkaConsumer to read data from Kafka for analysis. The following example code demonstrates how to use FlinkKafkaConsumer and KeyedStream to count the occurrences of each key in the Kafka data.<\/p>\n<p>Firstly, we need to introduce relevant dependencies.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.apache.flink<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>flink-streaming-java_2.11<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>${flink.version}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>org.apache.flink<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">groupId<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>flink-connector-kafka_2.11<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">artifactId<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">version<\/span>&gt;<\/span>${flink.version}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">version<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">dependency<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>Next, you can use the following code to read Kafka data for analysis:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">import<\/span> org.apache.flink.api.java.tuple.Tuple2;\r\n<span class=\"hljs-keyword\">import<\/span> org.apache.flink.streaming.api.datastream.DataStream;\r\n<span class=\"hljs-keyword\">import<\/span> org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;\r\n<span class=\"hljs-keyword\">import<\/span> org.apache.flink.streaming.api.functions.KeyedProcessFunction;\r\n<span class=\"hljs-keyword\">import<\/span> org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;\r\n<span class=\"hljs-keyword\">import<\/span> org.apache.flink.util.Collector;\r\n\r\n<span class=\"hljs-keyword\">import<\/span> java.util.Properties;\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">KafkaDataStatistics<\/span> {\r\n\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">main<\/span><span class=\"hljs-params\">(String[] args)<\/span> <span class=\"hljs-keyword\">throws<\/span> Exception {\r\n        <span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u6267\u884c\u73af\u5883<\/span>\r\n        <span class=\"hljs-type\">StreamExecutionEnvironment<\/span> <span class=\"hljs-variable\">env<\/span> <span class=\"hljs-operator\">=<\/span> StreamExecutionEnvironment.getExecutionEnvironment();\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u914d\u7f6eKafka\u8fde\u63a5\u76f8\u5173\u4fe1\u606f<\/span>\r\n        <span class=\"hljs-type\">Properties<\/span> <span class=\"hljs-variable\">props<\/span> <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Properties<\/span>();\r\n        props.setProperty(<span class=\"hljs-string\">\"bootstrap.servers\"<\/span>, <span class=\"hljs-string\">\"localhost:9092\"<\/span>);\r\n        props.setProperty(<span class=\"hljs-string\">\"group.id\"<\/span>, <span class=\"hljs-string\">\"flink-consumer\"<\/span>);\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u4eceKafka\u8bfb\u53d6\u6570\u636e<\/span>\r\n        FlinkKafkaConsumer&lt;String&gt; kafkaConsumer = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">FlinkKafkaConsumer<\/span>&lt;&gt;(<span class=\"hljs-string\">\"topic\"<\/span>, <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">SimpleStringSchema<\/span>(), props);\r\n        DataStream&lt;String&gt; kafkaStream = env.addSource(kafkaConsumer);\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u5bf9\u6570\u636e\u8fdb\u884c\u7edf\u8ba1<\/span>\r\n        DataStream&lt;Tuple2&lt;String, Integer&gt;&gt; result = kafkaStream\r\n                .keyBy(value -&gt; value) <span class=\"hljs-comment\">\/\/ \u6839\u636e\u952e\u5206\u7ec4<\/span>\r\n                .process(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">CountProcessFunction<\/span>());\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u6253\u5370\u7ed3\u679c<\/span>\r\n        result.print();\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u6267\u884c\u7a0b\u5e8f<\/span>\r\n        env.execute(<span class=\"hljs-string\">\"Kafka Data Statistics\"<\/span>);\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u81ea\u5b9a\u4e49ProcessFunction\u8fdb\u884c\u7edf\u8ba1<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">CountProcessFunction<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title class_\">KeyedProcessFunction<\/span>&lt;String, String, Tuple2&lt;String, Integer&gt;&gt; {\r\n        <span class=\"hljs-keyword\">private<\/span> ValueState&lt;Integer&gt; countState;\r\n\r\n        <span class=\"hljs-meta\">@Override<\/span>\r\n        <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">open<\/span><span class=\"hljs-params\">(Configuration parameters)<\/span> <span class=\"hljs-keyword\">throws<\/span> Exception {\r\n            ValueStateDescriptor&lt;Integer&gt; countDescriptor = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">ValueStateDescriptor<\/span>&lt;&gt;(<span class=\"hljs-string\">\"count\"<\/span>, Integer.class);\r\n            countState = getRuntimeContext().getState(countDescriptor);\r\n        }\r\n\r\n        <span class=\"hljs-meta\">@Override<\/span>\r\n        <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">processElement<\/span><span class=\"hljs-params\">(String value, Context ctx, Collector&lt;Tuple2&lt;String, Integer&gt;&gt; out)<\/span> <span class=\"hljs-keyword\">throws<\/span> Exception {\r\n            <span class=\"hljs-type\">Integer<\/span> <span class=\"hljs-variable\">count<\/span> <span class=\"hljs-operator\">=<\/span> countState.value();\r\n            <span class=\"hljs-keyword\">if<\/span> (count == <span class=\"hljs-literal\">null<\/span>) {\r\n                count = <span class=\"hljs-number\">0<\/span>;\r\n            }\r\n            count++;\r\n            countState.update(count);\r\n            out.collect(<span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-title class_\">Tuple2<\/span>&lt;&gt;(ctx.getCurrentKey(), count));\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the above code, the FlinkKafkaConsumer reads data from Kafka and converts it into a DataStream. Next, the data is grouped by key using the keyBy() method. Then, custom KeyedProcessFunction is used for processing the statistics and outputting the results to the DataStream. Finally, the results are printed using the print() method and the program is executed.<\/p>\n<p>Please note that the code examples provided above are only for a simple statistical illustration. Depending on your specific needs, you may need to make appropriate adjustments based on your data format and statistical logic.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Flink, we can use FlinkKafkaConsumer to read data from Kafka for analysis. The following example code demonstrates how to use FlinkKafkaConsumer and KeyedStream to count the occurrences of each key in the Kafka data. Firstly, we need to introduce relevant dependencies. &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;\/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;\/artifactId&gt; &lt;version&gt;${flink.version}&lt;\/version&gt; &lt;\/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;\/groupId&gt; &lt;artifactId&gt;flink-connector-kafka_2.11&lt;\/artifactId&gt; &lt;version&gt;${flink.version}&lt;\/version&gt; &lt;\/dependency&gt; Next, you can [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-19803","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>How to read Kafka data for statistics with Flink? - 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\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to read Kafka data for statistics with Flink?\" \/>\n<meta property=\"og:description\" content=\"In Flink, we can use FlinkKafkaConsumer to read data from Kafka for analysis. The following example code demonstrates how to use FlinkKafkaConsumer and KeyedStream to count the occurrences of each key in the Kafka data. Firstly, we need to introduce relevant dependencies. &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;\/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;\/artifactId&gt; &lt;version&gt;${flink.version}&lt;\/version&gt; &lt;\/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;\/groupId&gt; &lt;artifactId&gt;flink-connector-kafka_2.11&lt;\/artifactId&gt; &lt;version&gt;${flink.version}&lt;\/version&gt; &lt;\/dependency&gt; Next, you can [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T19:28:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T16:34:26+00:00\" \/>\n<meta name=\"author\" content=\"Ava Mitchell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ava Mitchell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/\"},\"author\":{\"name\":\"Ava Mitchell\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\"},\"headline\":\"How to read Kafka data for statistics with Flink?\",\"datePublished\":\"2024-03-15T19:28:39+00:00\",\"dateModified\":\"2024-03-21T16:34:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/\"},\"wordCount\":156,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/\",\"name\":\"How to read Kafka data for statistics with Flink? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T19:28:39+00:00\",\"dateModified\":\"2024-03-21T16:34:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to read Kafka data for statistics with Flink?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\",\"name\":\"Ava Mitchell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"caption\":\"Ava Mitchell\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to read Kafka data for statistics with Flink? - 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\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/","og_locale":"en_US","og_type":"article","og_title":"How to read Kafka data for statistics with Flink?","og_description":"In Flink, we can use FlinkKafkaConsumer to read data from Kafka for analysis. The following example code demonstrates how to use FlinkKafkaConsumer and KeyedStream to count the occurrences of each key in the Kafka data. Firstly, we need to introduce relevant dependencies. &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;\/groupId&gt; &lt;artifactId&gt;flink-streaming-java_2.11&lt;\/artifactId&gt; &lt;version&gt;${flink.version}&lt;\/version&gt; &lt;\/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.flink&lt;\/groupId&gt; &lt;artifactId&gt;flink-connector-kafka_2.11&lt;\/artifactId&gt; &lt;version&gt;${flink.version}&lt;\/version&gt; &lt;\/dependency&gt; Next, you can [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T19:28:39+00:00","article_modified_time":"2024-03-21T16:34:26+00:00","author":"Ava Mitchell","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Ava Mitchell","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/"},"author":{"name":"Ava Mitchell","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64"},"headline":"How to read Kafka data for statistics with Flink?","datePublished":"2024-03-15T19:28:39+00:00","dateModified":"2024-03-21T16:34:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/"},"wordCount":156,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/","name":"How to read Kafka data for statistics with Flink? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T19:28:39+00:00","dateModified":"2024-03-21T16:34:26+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-read-kafka-data-for-statistics-with-flink\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to read Kafka data for statistics with Flink?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64","name":"Ava Mitchell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","caption":"Ava Mitchell"},"url":"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=19803"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19803\/revisions"}],"predecessor-version":[{"id":53564,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/19803\/revisions\/53564"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=19803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=19803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=19803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}