{"id":36204,"date":"2022-12-13T14:16:56","date_gmt":"2022-12-13T08:46:56","guid":{"rendered":"http:\/\/ismiletechnologies.com\/?p=36204"},"modified":"2023-01-11T00:51:28","modified_gmt":"2023-01-10T19:21:28","slug":"review-of-golden-gate-big-data-adapters-kafka","status":"publish","type":"post","link":"https:\/\/ismiletechnologies.com\/en_us\/dataops\/review-of-golden-gate-big-data-adapters-kafka\/","title":{"rendered":"Review of Golden Gate Big Data Adapters \u2013 Kafka"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"36204\" class=\"elementor elementor-36204\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-36648a9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"36648a9\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-13aedce\" data-id=\"13aedce\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-41901bc elementor-widget elementor-widget-text-editor\" data-id=\"41901bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>In this blog we will look at Kafka adapter, and see how it works. What is Kafka? \u2013 It\u2019s a streaming subscriber-publisher system. So, how it\u2019s different from Flume? In essence, Kafka is nothing but a general purpose system where most of the consumer functionality and control relays on your own built consumer programs. While in Flume you have pre-created sources, sinks, and you can also use interceptors for changing data. Therefore, in Kafka you get on the destination exactly what you put on the source. Both Kafka and Flume can work together pretty well, and in this post we will use them both.\u00a0<\/p><p>Let\u2019s have a look at our existing configuration. Our source is a Oracle database, and we have Oracle Golden Gate for Oracle running for capturing changes for one schema in this database. We have OGG 12.2 in our environment and integrated extract on the source. In the destination we have OGG for BigData installed on a Linux box, and the replication is going directly to trail files on the destination side. The configuration has been made as simple as possible dedicating most attention to the <span style=\"color: #14a49c;\"><a style=\"color: #14a49c;\" href=\"http:\/\/ismiletechnologies.com\/dataops-managed-services\/\">Big Data<\/a><\/span> adapters functionality.\u00a0\u00a0<\/p><p>The OGG for Big Data has been installed, and now we need to setup the Kafka adapter. We are copying the configuration files from $OGG_HOME\/AdapterExamples\/big-data directory.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2faf023 elementor-widget elementor-widget-image\" data-id=\"2faf023\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"601\" height=\"27\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img1.png\" class=\"attachment-full size-full wp-image-36209\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img1.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img1-300x13.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ff91cf1 elementor-widget elementor-widget-text-editor\" data-id=\"ff91cf1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The kafka.props file needs to be adjusted to define Kafka\/Zookeper topics for data and schema changes (TopicName and SchemaTopicName parameters), and the gg.classpath for Kafka and Avro java classes. The rest of the parameters is left default including format for the changes which was defined as \u201cavro_op\u201d in the example.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2577130 elementor-widget elementor-widget-image\" data-id=\"2577130\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"601\" height=\"252\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img2.png\" class=\"attachment-full size-full wp-image-36225\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img2.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img2-300x126.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c5b5f4e elementor-widget elementor-widget-text-editor\" data-id=\"c5b5f4e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The next file that needs to be corrected is custom_kafka_producer.properties which contains information about our running Kafka server, and some addition parameters like compression is also defined. All the parameters have been left unchanged except \u201cbootstrap.servers\u201d where the information about Kafka service is put.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e602f8 elementor-widget elementor-widget-image\" data-id=\"7e602f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"601\" height=\"131\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img3.png\" class=\"attachment-full size-full wp-image-36226\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img3.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img3-300x65.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e091595 elementor-widget elementor-widget-text-editor\" data-id=\"e091595\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">If an initial load is planned through Kafka, we can use something like that parameter file which has been prepared for a passive replicat:<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ccac32 elementor-widget elementor-widget-image\" data-id=\"7ccac32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"152\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img4.png\" class=\"attachment-full size-full wp-image-36227\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img4.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img4-300x76.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-52a1d4e elementor-widget elementor-widget-text-editor\" data-id=\"52a1d4e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Before starting any replicat, the system needs to be prepared to receive the data. Since the Kafka itself is pure streaming system, it cannot pass files to HDFS without taking help of other program or connector. In the first case, we will have Kafka passing data to Flume. and from Flume will use \u2018Flume sink\u2019 to HDFS. You also need to know that you need a Zookeeper to manage topics for Kafka. Assume that we have zookeeper ready, and it is up and running on port 2181.\u00a0<\/p><p>Kafka version 0.9.0.1 has been used, it has been downloading from https:\/\/kafka.apache.org\/downloads.html. After downloading, it has been unpacked, and after slight configuration correction it has been started it in standalone mode.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d11c37 elementor-widget elementor-widget-image\" data-id=\"5d11c37\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"362\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img5.png\" class=\"attachment-full size-full wp-image-36228\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img5.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img5-300x181.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b8b67ce elementor-widget elementor-widget-text-editor\" data-id=\"b8b67ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">Now we must prepare our two topics for the data received from the GoldenGate. We have defined topic \u201coggdata\u201d for our data flow using parameter gg.handler.kafkahandler.TopicName in our kafka.props file, and topic \u201cmySchemaTopic\u201d for schema changes. Now, we will create the topic using Kafka\u2019s supplemented scripts:<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75066bd elementor-widget elementor-widget-image\" data-id=\"75066bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"186\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img6.png\" class=\"attachment-full size-full wp-image-36229\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img6.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img6-300x93.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-989151c elementor-widget elementor-widget-text-editor\" data-id=\"989151c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>When the GoldenGate replicat is started all the necessary topics will also be created automatically. You will have to create the topics explicitly only if you want to use some custom parameters for it. There is also an option to change the topic later on when setting up configuration parameters.\u00a0<\/p><p>Given below is list of the topics we have when one of them has been created manually, and the second one is created automatically through the replicat process.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-356cfbf elementor-widget elementor-widget-image\" data-id=\"356cfbf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"209\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img7.png\" class=\"attachment-full size-full wp-image-36230\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img7.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img7-300x104.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e32241b elementor-widget elementor-widget-text-editor\" data-id=\"e32241b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">In our configuration we have just a single server, and we have the simplest configuration for Kafka. In a real business case, the configuration can be way too complex. Our replicat will post the data changes to oggtopic, while all the changes and definitions for schema will go to the mySchemaTopic. It has been already mentioned that we will use Flume functionality to write to HDFS. We have prepared Flume with two sources and sinks which will be used to write data changes to the \/user\/oracle\/ggflume HDFS directory. Here is the configuration for Flume:<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b0cfb5e elementor-widget elementor-widget-image\" data-id=\"b0cfb5e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"366\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img8.png\" class=\"attachment-full size-full wp-image-36231\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img8.png 602w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img8-300x182.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e1b2ad elementor-widget elementor-widget-text-editor\" data-id=\"1e1b2ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>As it can be seen, we have separate sources for each of our Kafka topics, and we also have two sinks pointing towards the same HDFS location. The data will be written down in Avro format. All preparations have been completed, and we are running Kafka server, two topics, and our Flume is ready to write data to HDFS. However, our HDFS directory is still empty.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-778d985 elementor-widget elementor-widget-image\" data-id=\"778d985\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"32\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img9.png\" class=\"attachment-full size-full wp-image-36232\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img9.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img9-300x16.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06b7dd1 elementor-widget elementor-widget-text-editor\" data-id=\"06b7dd1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">Now we will run the passive replicat with our initial data load trail file:<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b82f296 elementor-widget elementor-widget-image\" data-id=\"b82f296\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"44\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img10.png\" class=\"attachment-full size-full wp-image-36233\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img10.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img10-300x22.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dac5e66 elementor-widget elementor-widget-text-editor\" data-id=\"dac5e66\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">Now let\u2019s look at the results. We have 3 files on HDFS, the first two files describe structure for the TEST_TAB_1 and TEST_TAB_2, and the third file has the data changes, or we can\u00a0 say initial data for those tables. It can also be seen that the schema definition was put on separate files while the data changes were put to the one file.<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47d4e12 elementor-widget elementor-widget-image\" data-id=\"47d4e12\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"362\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img11.png\" class=\"attachment-full size-full wp-image-36234\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img11.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img11-300x181.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-40b518f elementor-widget elementor-widget-text-editor\" data-id=\"40b518f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">Now the ongoing replication needs to be created. Our extract is up and running, and passing changes to the replicat side to the directory .\/dirdat<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d15e985 elementor-widget elementor-widget-image\" data-id=\"d15e985\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"131\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img12.png\" class=\"attachment-full size-full wp-image-36235\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img12.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img12-300x65.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b68b2b8 elementor-widget elementor-widget-text-editor\" data-id=\"b68b2b8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">Parameter file for the Kafka replicat has been prepared:<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4337463 elementor-widget elementor-widget-image\" data-id=\"4337463\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"118\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img13.png\" class=\"attachment-full size-full wp-image-36236\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img13.png 602w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img13-300x59.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-91d4bd9 elementor-widget elementor-widget-text-editor\" data-id=\"91d4bd9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">We only need to add and start our rkafka replica for the Big Data GoldenGate.<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-189b485 elementor-widget elementor-widget-image\" data-id=\"189b485\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"131\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img14.png\" class=\"attachment-full size-full wp-image-36237\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img14.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img14-300x65.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6946233 elementor-widget elementor-widget-text-editor\" data-id=\"6946233\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">We don\u2019t have dirdat\/or000000000 file in our dirdat directory. So, our replicat needs to be slightly corrected in order to work with proper trail files. The sequence for the replicat file is being altered to reflect actual sequence number for the last trail file.\u00a0<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d267b16 elementor-widget elementor-widget-image\" data-id=\"d267b16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"196\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img15.png\" class=\"attachment-full size-full wp-image-36238\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img15.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img15-300x98.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e40c757 elementor-widget elementor-widget-text-editor\" data-id=\"e40c757\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">Now, we change some data:<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-799789e elementor-widget elementor-widget-image\" data-id=\"799789e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"310\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img16.png\" class=\"attachment-full size-full wp-image-36239\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img16.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img16-300x155.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a708f1 elementor-widget elementor-widget-text-editor\" data-id=\"1a708f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">We have our schema definition file and a file with some data changes.<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-10dd46b elementor-widget elementor-widget-image\" data-id=\"10dd46b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"213\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img17.png\" class=\"attachment-full size-full wp-image-36240\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img17.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img17-300x106.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1981f8a elementor-widget elementor-widget-text-editor\" data-id=\"1981f8a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>We only have a file with data changes as no DDL changes were made. The transactions must be grouped to the files as per our Flume parameters.\u00a0<\/p><p>The old value for the updated record and the new one can also be seen. Using that information the changes can be reconstructed, but certain logic needs to be applied to decrypt the changes.\u00a0<\/p><p>For doing deletion we are getting operation flag \u201cF\u201d and also the values for the deleted record. There is no schema definition file because no changes were made.\u00a0<\/p><p>Now try some DDL.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f19295c elementor-widget elementor-widget-image\" data-id=\"f19295c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"134\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img18.png\" class=\"attachment-full size-full wp-image-36241\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img18.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img18-300x67.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7992d9d elementor-widget elementor-widget-text-editor\" data-id=\"7992d9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">No new files on HDFS.<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d469f1b elementor-widget elementor-widget-image\" data-id=\"d469f1b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"235\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img19.png\" class=\"attachment-full size-full wp-image-36242\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img19.png 602w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img19-300x117.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4015601 elementor-widget elementor-widget-text-editor\" data-id=\"4015601\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">Again, we have only file with data changes. The file we were getting for the previous insert was compared with the insert after truncate, but any difference couldn\u2019t be fined except for the binary part of the avro file. It may require additional investigation and clarification. In the current state it appears it is easy to miss a truncate command for a table on the destination side. We will change the table, and will add a column there.<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f8f003c elementor-widget elementor-widget-image\" data-id=\"f8f003c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"43\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img20.png\" class=\"attachment-full size-full wp-image-36243\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img20.png 601w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img20-300x21.png 300w\" sizes=\"(max-width: 601px) 100vw, 601px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-11f744b elementor-widget elementor-widget-text-editor\" data-id=\"11f744b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\">We are not getting any new files having new table definitions till we do any DML on the table. Both the files (with the new schema definition and data changes) will appear after we insert, delete or update any rows there.<\/span>\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c41ff03 elementor-widget elementor-widget-image\" data-id=\"c41ff03\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"289\" src=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img21.png\" class=\"attachment-full size-full wp-image-36244\" alt=\"\" srcset=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img21.png 602w, https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2022\/12\/Golden-Gate-Big-Data-Adapters-Kafka_img21-300x144.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d537789 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"d537789\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d1f5793 elementor-widget elementor-widget-text-editor\" data-id=\"d1f5793\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\tJMeter was used to generate some load, and it could easily, without any delays, replicate 225 transactions per second (30% inserts 80% updates). So, it was not a test for Kafka or Flume, which can sustain far more load, but rather a combination of GoldenGate with the Big Data infrastructure. WE could see that it was stable without any errors. It is understandable\u00a0 that the current test is very far from any production workflow which may have Oracle Database (or any other RDBMS), plus GoldenGate, plus Kafka, plus Storm plus many more. And the final data format could be completely different. This far the adapters are looking good and doing good job.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-507a7af elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"507a7af\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-91634f9\" data-id=\"91634f9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-2c47b17 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2c47b17\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-cec8c4e\" data-id=\"cec8c4e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f170662 elementor-widget elementor-widget-heading\" data-id=\"f170662\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">So, are you ready to experience our consulting services for Kafka?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e0ccffb elementor-widget elementor-widget-text-editor\" data-id=\"e0ccffb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>We are here to help, schedule a free assessment today.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-9410b10\" data-id=\"9410b10\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bf80bf9 elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"bf80bf9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source&quot;:&quot;external_url&quot;,&quot;source_external_url&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/assets4.lottiefiles.com\\\/packages\\\/lf20_kkesf8mx.json&quot;,&quot;is_external&quot;:&quot;&quot;,&quot;nofollow&quot;:&quot;&quot;,&quot;custom_attributes&quot;:&quot;&quot;},&quot;loop&quot;:&quot;yes&quot;,&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0.9,&quot;sizes&quot;:[]},&quot;lazyload&quot;:&quot;yes&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;trigger&quot;:&quot;arriving_to_viewport&quot;,&quot;viewport&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:0,&quot;end&quot;:100}},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:100,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-inner-column elementor-element elementor-element-a074791\" data-id=\"a074791\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c4e97bb elementor-align-right elementor-mobile-align-left elementor-tablet-align-right elementor-widget elementor-widget-button\" data-id=\"c4e97bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-xs\" href=\"#elementor-action%3Aaction%3Dpopup%3Aopen%26settings%3DeyJpZCI6IjI5OTEiLCJ0b2dnbGUiOnRydWV9\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Start Today !<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>In this blog we will look at Kafka adapter, and see how it works. What is Kafka? \u2013 It\u2019s a streaming subscriber-publisher system. So, how it\u2019s different from Flume? In essence, Kafka is nothing but a general purpose system where most of the consumer functionality and control relays on your own built consumer programs. While [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":36248,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[249],"tags":[],"class_list":["post-36204","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dataops"],"_links":{"self":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts\/36204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/comments?post=36204"}],"version-history":[{"count":15,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts\/36204\/revisions"}],"predecessor-version":[{"id":37003,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts\/36204\/revisions\/37003"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/media\/36248"}],"wp:attachment":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/media?parent=36204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/categories?post=36204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/tags?post=36204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}