{"id":39998,"date":"2015-05-13T16:00:49","date_gmt":"2015-05-13T13:00:49","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=39998"},"modified":"2015-05-13T10:32:58","modified_gmt":"2015-05-13T07:32:58","slug":"streaming-data-into-hpcc-using-java","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html","title":{"rendered":"Streaming data into HPCC using Java"},"content":{"rendered":"<p>High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain Specific Language (DSL) called Enterprise Control Language (ECL). \u00a0 ECL is great, but occasionally you will want to call out to perform heavy lifting in other languages. \u00a0For example, you may want to leverage an NLP library written in Java.<\/p>\n<p>Additionally, HPCC typically operates against data residing on filesystems akin to HDFS. \u00a0And just like with HDFS, once you move beyond log file processing and static data snapshots, you quickly develop a desire for a database backend.<\/p>\n<p>In fact, I&#8217;d say this is a general industry trend: HDFS-&gt;HBase, S3-&gt;Redshift, etc. \u00a0 \u00a0Eventually, you want to decrease the latency of analytics (to near zero). \u00a0To do this, you setup some sort of distributed database, capable of supporting both batch processing as well as data streaming\/micro-batching. \u00a0And you adopt an immutable\/incremental approach to data storage, which allows you to collapse your infrastructure and stream data into the system as it is being analyzed (simplifying everything int he process)<\/p>\n<p>But I digress, as a step in that direction&#8230;<\/p>\n<p>We can leverage the Java Integration capabilities within HPCC to support User Defined Functions in Java. \u00a0Likewise, we can leverage the same facilities to add additional backend storage mechanisms (e.g. Cassandra). \u00a0More specifically, let&#8217;s have a look at the <b><i>streaming<\/i><\/b> capabilities of HPCC\/Java integration to get data out of an external source.<\/p>\n<p>Let&#8217;s first look at vanilla Java integration.<\/p>\n<p>If you have an HPCC environment setup, the java integration starts with the \/opt\/HPCCSystems\/classes path. \u00a0You can drop classes and jar files into that location, and the funcions will be available from ECL. \u00a0Follow <a href=\"https:\/\/wiki.hpccsystems.com\/display\/hpcc\/Java+Integration\">this page for instructions<\/a>.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>If you run into issues, go through the troubleshooting guide on that page. \u00a0The hardest part is getting HPCC to find your classes. \u00a0For me, I ran into a nasty jdk version issue. \u00a0By default, HPCC was picking up an old JDK version on my Ubuntu machine. \u00a0Since it was using an old version, HPCC could not find the classes compiled with the &#8220;new&#8221; JDK(1.7), which resulted in the cryptic message, &#8220;Failed to resolve class name&#8221;. \u00a0If you run into this, pull the <a href=\"https:\/\/github.com\/hpcc-systems\/HPCC-Platform\/pull\/7284\">patch I submitted to fix this for Ubuntu<\/a>.<\/p>\n<p>Once you have that working, you will be able to call the Java from ECL using the following syntax:<\/p>\n<pre class=\" brush:bash\">IMPORT java;\r\ninteger add1(integer val) := IMPORT(java, 'JavaCat.add1:(I)I');\r\noutput(add1(10));<\/pre>\n<p>This is pretty neat, and as the documentation suggests, you can return XML from the Java method if the data is complex. But what do you do if you have a TON of data, more than can reside in memory? Well, then you need Java streaming to HPCC. ;)<\/p>\n<p>Instead of returning the actual data from the imported method, we return a java Iterator. HPCC then uses the Iterator to construct a dataset. The following is an example Iterator.<\/p>\n<pre class=\" brush:java\">import java.util.ArrayList;\r\nimport java.util.Iterator;\r\nimport java.util.List;\r\n\r\npublic class DataStream implements Iterator {\r\n    private int position = 0;\r\n    private int size = 5;\r\n\r\n    public static Iterator stream(String foo, String bar){\r\n        return new DataStream();\r\n    }\r\n\r\n    @Override\r\n    public boolean hasNext() {\r\n        position++;\r\n        return (position &lt; size);\r\n    }\r\n\r\n    @Override\r\n    public Row next() {\r\n        return new Row(\"row\");\r\n    }\r\n\r\n    @Override\r\n    public void remove() {\r\n    }\r\n\r\n}<\/pre>\n<p>This is a standard Iterator, but notice that it returns a Row object, which is defined as this:<\/p>\n<pre class=\" brush:java\">import java.util.ArrayList;\r\nimport java.util.Iterator;\r\nimport java.util.List;\r\n\r\npublic class Row {\r\n    private String value;\r\n    public Row(String value){\r\n       this.value = value;\r\n    }\r\n}<\/pre>\n<p>The object is a java bean. \u00a0HPCC will set the values of the member variables as it maps into the DATASET. \u00a0To see exactly how this happens, let&#8217;s look at the ECL code:<\/p>\n<pre class=\" brush:bash\">IMPORT java;\r\n\r\nrowrec := record\r\n  string value;\r\nend;\r\n\r\nDATASET(rowrec) stream() := IMPORT(java, 'DataStream.stream:(Ljava\/lang\/String;Ljava\/lang\/String;)Ljava\/util\/Iterator;');\r\n\r\noutput(stream());\r\n<\/pre>\n<p>After the import statement, we define a type of record called <i>rowrec<\/i>. \u00a0In the following line, we import the UDF, and type the result as a DATASET that contains <i>rowrecs<\/i>. \u00a0The names of the fields in <i>rowrec<\/i> must match the names of the member variables on the java bean. \u00a0HPCC will use the iterator, and populate the dataset with the return of the next() method. The final line of the ECL outputs the results returned.<\/p>\n<p>I&#8217;ve committed all of the above code to <a href=\"https:\/\/github.com\/boneill42\/hpcc-java-streaming-example\">a github repository<\/a>\u00a0with some instructions on getting it running.\u00a0 Have fun.<\/p>\n<p>Stay tuned for more&#8230;<\/p>\n<p>Imagine combining the java streaming capabilities outlined here, with the ability to stream data out out of Cassandra as detailed <a href=\"http:\/\/brianoneill.blogspot.com\/2015\/05\/data-locality-w-cassandra-how-to-scan.html\">in my previous post<\/a>. The result is a powerful means of running batch analytics using Thor, against data stored in Cassandra (with data locality!)&#8230; (possibly enabling ECL jobs against data ingested via live real-time event streams! =)<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/brianoneill.blogspot.com\/2015\/05\/streaming-data-into-hpcc-using-java.html\">Streaming data into HPCC using Java<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\/\">JCG partner<\/a> Brian ONeill at the <a href=\"http:\/\/brianoneill.blogspot.com\/\">Brian ONeill&#8217;s Blog<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain Specific Language (DSL) called Enterprise Control Language (ECL). \u00a0 ECL is great, but occasionally you will want to call out to perform heavy lifting in other languages. \u00a0For example, you may want &hellip;<\/p>\n","protected":false},"author":416,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[1148],"class_list":["post-39998","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-hpcc"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Streaming data into HPCC using Java - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain\" \/>\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.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Streaming data into HPCC using Java - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2015-05-13T13:00:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Brian ONeill\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brian ONeill\" \/>\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:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html\"},\"author\":{\"name\":\"Brian ONeill\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/b6d71973df5270d571303024aed2b548\"},\"headline\":\"Streaming data into HPCC using Java\",\"datePublished\":\"2015-05-13T13:00:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html\"},\"wordCount\":719,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"HPCC\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html\",\"name\":\"Streaming data into HPCC using Java - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2015-05-13T13:00:49+00:00\",\"description\":\"High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/05\\\/streaming-data-into-hpcc-using-java.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Streaming data into HPCC using Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/b6d71973df5270d571303024aed2b548\",\"name\":\"Brian ONeill\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/83507413f35f19d244abd73ea8f033b3516865340e6da17265e55a34af365e37?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/83507413f35f19d244abd73ea8f033b3516865340e6da17265e55a34af365e37?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/83507413f35f19d244abd73ea8f033b3516865340e6da17265e55a34af365e37?s=96&d=mm&r=g\",\"caption\":\"Brian ONeill\"},\"sameAs\":[\"http:\\\/\\\/brianoneill.blogspot.gr\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/brian-oneill\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Streaming data into HPCC using Java - Java Code Geeks","description":"High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain","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.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html","og_locale":"en_US","og_type":"article","og_title":"Streaming data into HPCC using Java - Java Code Geeks","og_description":"High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain","og_url":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2015-05-13T13:00:49+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Brian ONeill","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Brian ONeill","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html"},"author":{"name":"Brian ONeill","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/b6d71973df5270d571303024aed2b548"},"headline":"Streaming data into HPCC using Java","datePublished":"2015-05-13T13:00:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html"},"wordCount":719,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["HPCC"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html","url":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html","name":"Streaming data into HPCC using Java - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2015-05-13T13:00:49+00:00","description":"High Performance Computing Cluster (HPCC) is a distributed processing framework akin to Hadoop, except that it runs programs written in its own Domain","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2015\/05\/streaming-data-into-hpcc-using-java.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Streaming data into HPCC using Java"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/b6d71973df5270d571303024aed2b548","name":"Brian ONeill","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/83507413f35f19d244abd73ea8f033b3516865340e6da17265e55a34af365e37?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/83507413f35f19d244abd73ea8f033b3516865340e6da17265e55a34af365e37?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/83507413f35f19d244abd73ea8f033b3516865340e6da17265e55a34af365e37?s=96&d=mm&r=g","caption":"Brian ONeill"},"sameAs":["http:\/\/brianoneill.blogspot.gr\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/brian-oneill"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/39998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/416"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=39998"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/39998\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=39998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=39998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=39998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}