{"id":2143524169,"date":"2022-08-09T00:00:00","date_gmt":"2022-08-09T00:00:00","guid":{"rendered":"https:\/\/newgensoft-v2.wordpoets.com\/resources\/blog\/2022\/08\/09\/adapting-spark-distributed-compute-framework\/"},"modified":"2026-06-03T10:38:31","modified_gmt":"2026-06-03T10:38:31","slug":"adapting-spark-distributed-compute-framework","status":"publish","type":"post","link":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/","title":{"rendered":"Adapting Spark for a Distributed Compute Framework"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>The Beginning of Our Data Science Platform Development Journey<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When we started developing the Data Science Platform to help data engineers and citizen and expert data scientists manage the end-to-end Data Science model lifecycle at the enterprise level,&nbsp;<strong>the key question was to choose the<\/strong>&nbsp;<strong>right compute framework<\/strong>. The fundamental need in <a href=\"https:\/\/newgensoft.com\/platform\/low-code-application-development\/data-model-designer\/\">AI\/ML model development<\/a> is to personalize the decision at the individual level instead of micro\/macro segment level. As such, AI\/ML models require large iterative compute processes at the time of model training and development. Therefore, the memory computation helps a lot in expediting the training process, leading to up to 100x improvement in turnaround time compared to classical Disk I\/O.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span id=\"Embracing_and_Enhancing_Spark\" class=\"ez-toc-section\"><\/span><strong>Embracing and Enhancing Spark<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We selected Open Source Spark for our compute engine and used their existing Spark ML base to&nbsp;build the platform. At that time, Spark had just released 1.x version. We analyzed the gap in the existing Spark version and started working to fill those gaps based on our own platform\u2019s requirements. Therefore, we had to make our own derived version of the Spark ML component&nbsp;as per our need, where we did not make any significant changes to the compute part. For seamless integration with different versions of Spark distribution (Cloud-based like Azure, AWS, etc. and non-cloud-based like Cloudera, MapR one), our team has made enhancements to the Livy module that provides integration with Spark Rest-based API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span id=\"A_Glimpse_into_10_Notable_Enhancements_We_have_Done_in_Spark_for_our_Platform\" class=\"ez-toc-section\"><\/span><strong>A glimpse into 10 notable enhancements we have done in Spark for our AI\/ML platform<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Deep Learning Algorithms:<\/strong>\u00a0Spark ML was found lacking in deep learning algorithms capability. We added some of the commonly used deep learning algorithms, such as CNN (Convolutional Neural Network) and RBM (Restricted Boltzmann Machine) which are crucial in solving\u00a0many\u00a0use cases\u00a0of deep\u00a0learning model approaches.<\/li>\n\n\n\n<li><strong>Use of SMOTE:<\/strong>\u00a0One of the major problems Data Scientists faces is the requirement to use SMOTE kind of algorithms to tackle data imbalances. This happens in use cases like lending where data is imbalanced. We have extended Spark ML with SMOTE through KNN implementation.<\/li>\n\n\n\n<li><strong>Mechanism for Solving Timeseries Algorithms:<\/strong>\u00a0Given that there was no support for the timeseries\u00a0algorithms on Spark, our team fixed the gap by putting ARIMA and ARIMAX on Spark. This has given our platform the capability to solve timeseries problems like sales forecast, price forecast etc.<\/li>\n\n\n\n<li><strong>Ability to Handle Missing Data Scenarios:<\/strong>\u00a0One of the major problems for solving any <a href=\"https:\/\/newgensoft.com\/platform\/low-code-application-development\/data-model-designer\/\">AI\/ML modeling<\/a> is handling the missing data. The missing data can be numeric like age or can be a string like address, city, or type of retail, etc. We have added many different scenarios of missing value data handling which helps data scientists to solve user cases properly.<\/li>\n\n\n\n<li><strong>Field-aware Factorization Machine (FFM):<\/strong>\u00a0There are many scenarios where datasets used for AI\/ML modeling are in the form of\u00a0the sparse matrix. For example, one of the use cases where you need to predict CTR (Click through rate), one needs to use factorization process to be able to use that kind of dataset. We have extended Spark ML with FFM to solve these kinds of use cases.<\/li>\n\n\n\n<li><strong>AutoML Functionality:<\/strong>\u00a0As platform users have grown, many citizen data scientists\u00a0started asking for AutoML support. Using AutoML, they can try different algorithms in one go without trying algorithms one-by-one with different parameters. It really helps to try different AI\/ML algos in one go and also saves the time to try different individual experiments.\u00a0We have added AutoML to our platform.<\/li>\n\n\n\n<li><strong>Model Evaluation Metrics:<\/strong>\u00a0We have added different model evaluation metrics which are not present in Spark ML into the various algorithms, such as regression, clustering, classification, etc. This helps the data science personnel evaluate the model better against multiple metrics at the time of auto retraining of the AI\/ML models.<\/li>\n\n\n\n<li><strong>Memory Consumption Optimization:<\/strong>\u00a0We optimize the memory consumption as the scale of data increases and compute changes corresponding to data values or operation.<\/li>\n\n\n\n<li><strong>Enhanced Data Presentation for Recommendation Scenarios:<\/strong>\u00a0Typically, algorithms like ALS provide the basic capability for recommendation. We have added advanced capability to check all the products identified for recommendation and built data presentation components to control the presentation basis segments of users.<\/li>\n\n\n\n<li><strong>Addition of Vector Disassembler:<\/strong>\u00a0We have added vector disassembler for many use-cases like SVD, PCA, One Hot Encoding, etc. It also helps in understanding each dimension of the vector properly through data dumps.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>We understand that the product journey is constantly evolving. To stay ahead of the curve, we keep adding the relevant components in Spark with every release. Here are some of the product roadmap components&nbsp;that we plan to add to our existing release of Spark\/Spark ML in the&nbsp;<a href=\"https:\/\/newgensoft.com\/platform\/artificial-intelligence-data-science\/\" target=\"_blank\" rel=\"noopener\">AI Cloud platform<\/a>:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automated\u00a0logical\u00a0validation of AI\/ML algorithms and other functions in Spark<\/li>\n\n\n\n<li>Creation of more image data handling components<\/li>\n\n\n\n<li>Support for XML and JSON format data<\/li>\n\n\n\n<li>NLP-based summarized logging capability<\/li>\n\n\n\n<li>Ability to predict job time corresponding to dataset and parameters of algorithm and functions.<\/li>\n\n\n\n<li>Exploratory Data Analysis (EDA) of timeseries data<\/li>\n\n\n\n<li>More data engineering and modeling\u00a0capabilities\u00a0regarding NLP<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">I hope you found this blog informative. To stay abreast with the latest updates, keep watching this space.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Beginning of Our Data Science Platform Development Journey When we started developing the Data Science Platform to help data engineers and citizen and expert data scientists manage the end-to-end Data Science model lifecycle at the enterprise level,&nbsp;the key question was to choose the&nbsp;right compute framework. The fundamental need in AI\/ML model development is to [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":2143524170,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[24],"resources-topic":[],"resources-group":[],"class_list":["post-2143524169","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-ai"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Adapting Spark for a Distributed Compute Framework - Newgen Resources (DX++)<\/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:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Adapting Spark for a Distributed Compute Framework - Newgen Resources (DX++)\" \/>\n<meta property=\"og:description\" content=\"The Beginning of Our Data Science Platform Development Journey When we started developing the Data Science Platform to help data engineers and citizen and expert data scientists manage the end-to-end Data Science model lifecycle at the enterprise level,&nbsp;the key question was to choose the&nbsp;right compute framework. The fundamental need in AI\/ML model development is to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"Newgen Resources (DX++)\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-09T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-03T10:38:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2022\/08\/AI-ml-platform.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"853\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"newgensoftware\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"newgensoftware\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/\"},\"author\":{\"name\":\"newgensoftware\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#\\\/schema\\\/person\\\/c9c925c47d338b578415ab755331f564\"},\"headline\":\"Adapting Spark for a Distributed Compute Framework\",\"datePublished\":\"2022-08-09T00:00:00+00:00\",\"dateModified\":\"2026-06-03T10:38:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/\"},\"wordCount\":875,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/wp-content\\\/uploads\\\/sites\\\/6\\\/2022\\\/08\\\/AI-ml-platform.jpg\",\"keywords\":[\"AI\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/\",\"url\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/\",\"name\":\"Adapting Spark for a Distributed Compute Framework - Newgen Resources (DX++)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/wp-content\\\/uploads\\\/sites\\\/6\\\/2022\\\/08\\\/AI-ml-platform.jpg\",\"datePublished\":\"2022-08-09T00:00:00+00:00\",\"dateModified\":\"2026-06-03T10:38:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#primaryimage\",\"url\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/wp-content\\\/uploads\\\/sites\\\/6\\\/2022\\\/08\\\/AI-ml-platform.jpg\",\"contentUrl\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/wp-content\\\/uploads\\\/sites\\\/6\\\/2022\\\/08\\\/AI-ml-platform.jpg\",\"width\":1280,\"height\":853,\"caption\":\"AI\\\/ML platform\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/blog\\\/adapting-spark-distributed-compute-framework\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Adapting Spark for a Distributed Compute Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#website\",\"url\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/\",\"name\":\"Newgen DX++\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#organization\",\"name\":\"Newgen Software\",\"url\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/wp-content\\\/uploads\\\/sites\\\/6\\\/2026\\\/06\\\/Newgen-Logo_Light-scaled.png\",\"contentUrl\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/wp-content\\\/uploads\\\/sites\\\/6\\\/2026\\\/06\\\/Newgen-Logo_Light-scaled.png\",\"width\":2560,\"height\":788,\"caption\":\"Newgen Software\"},\"image\":{\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/newgensoft.com\\\/resources\\\/#\\\/schema\\\/person\\\/c9c925c47d338b578415ab755331f564\",\"name\":\"newgensoftware\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8733893a075124a3026cb908ca3f42f6f9cc5153f44ea6c37051cbdb04353892?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8733893a075124a3026cb908ca3f42f6f9cc5153f44ea6c37051cbdb04353892?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8733893a075124a3026cb908ca3f42f6f9cc5153f44ea6c37051cbdb04353892?s=96&d=mm&r=g\",\"caption\":\"newgensoftware\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Adapting Spark for a Distributed Compute Framework - Newgen Resources (DX++)","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:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/","og_locale":"en_US","og_type":"article","og_title":"Adapting Spark for a Distributed Compute Framework - Newgen Resources (DX++)","og_description":"The Beginning of Our Data Science Platform Development Journey When we started developing the Data Science Platform to help data engineers and citizen and expert data scientists manage the end-to-end Data Science model lifecycle at the enterprise level,&nbsp;the key question was to choose the&nbsp;right compute framework. The fundamental need in AI\/ML model development is to [&hellip;]","og_url":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/","og_site_name":"Newgen Resources (DX++)","article_published_time":"2022-08-09T00:00:00+00:00","article_modified_time":"2026-06-03T10:38:31+00:00","og_image":[{"width":1280,"height":853,"url":"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2022\/08\/AI-ml-platform.jpg","type":"image\/jpeg"}],"author":"newgensoftware","twitter_card":"summary_large_image","twitter_misc":{"Written by":"newgensoftware","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#article","isPartOf":{"@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/"},"author":{"name":"newgensoftware","@id":"https:\/\/newgensoft.com\/resources\/#\/schema\/person\/c9c925c47d338b578415ab755331f564"},"headline":"Adapting Spark for a Distributed Compute Framework","datePublished":"2022-08-09T00:00:00+00:00","dateModified":"2026-06-03T10:38:31+00:00","mainEntityOfPage":{"@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/"},"wordCount":875,"commentCount":0,"publisher":{"@id":"https:\/\/newgensoft.com\/resources\/#organization"},"image":{"@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2022\/08\/AI-ml-platform.jpg","keywords":["AI"],"articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/","url":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/","name":"Adapting Spark for a Distributed Compute Framework - Newgen Resources (DX++)","isPartOf":{"@id":"https:\/\/newgensoft.com\/resources\/#website"},"primaryImageOfPage":{"@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#primaryimage"},"image":{"@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2022\/08\/AI-ml-platform.jpg","datePublished":"2022-08-09T00:00:00+00:00","dateModified":"2026-06-03T10:38:31+00:00","breadcrumb":{"@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#primaryimage","url":"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2022\/08\/AI-ml-platform.jpg","contentUrl":"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2022\/08\/AI-ml-platform.jpg","width":1280,"height":853,"caption":"AI\/ML platform"},{"@type":"BreadcrumbList","@id":"https:\/\/newgensoft.com\/resources\/blog\/adapting-spark-distributed-compute-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/newgensoft.com\/resources\/"},{"@type":"ListItem","position":2,"name":"Adapting Spark for a Distributed Compute Framework"}]},{"@type":"WebSite","@id":"https:\/\/newgensoft.com\/resources\/#website","url":"https:\/\/newgensoft.com\/resources\/","name":"Newgen DX++","description":"","publisher":{"@id":"https:\/\/newgensoft.com\/resources\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/newgensoft.com\/resources\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/newgensoft.com\/resources\/#organization","name":"Newgen Software","url":"https:\/\/newgensoft.com\/resources\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/newgensoft.com\/resources\/#\/schema\/logo\/image\/","url":"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2026\/06\/Newgen-Logo_Light-scaled.png","contentUrl":"https:\/\/newgensoft.com\/resources\/wp-content\/uploads\/sites\/6\/2026\/06\/Newgen-Logo_Light-scaled.png","width":2560,"height":788,"caption":"Newgen Software"},"image":{"@id":"https:\/\/newgensoft.com\/resources\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/newgensoft.com\/resources\/#\/schema\/person\/c9c925c47d338b578415ab755331f564","name":"newgensoftware","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8733893a075124a3026cb908ca3f42f6f9cc5153f44ea6c37051cbdb04353892?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8733893a075124a3026cb908ca3f42f6f9cc5153f44ea6c37051cbdb04353892?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8733893a075124a3026cb908ca3f42f6f9cc5153f44ea6c37051cbdb04353892?s=96&d=mm&r=g","caption":"newgensoftware"}}]}},"_links":{"self":[{"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/posts\/2143524169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/comments?post=2143524169"}],"version-history":[{"count":2,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/posts\/2143524169\/revisions"}],"predecessor-version":[{"id":2143528980,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/posts\/2143524169\/revisions\/2143528980"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/media\/2143524170"}],"wp:attachment":[{"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/media?parent=2143524169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/categories?post=2143524169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/tags?post=2143524169"},{"taxonomy":"resources-topic","embeddable":true,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/resources-topic?post=2143524169"},{"taxonomy":"resources-group","embeddable":true,"href":"https:\/\/newgensoft.com\/resources\/wp-json\/wp\/v2\/resources-group?post=2143524169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}