

{"id":10655,"date":"2018-03-13T09:34:00","date_gmt":"2018-03-13T09:34:00","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=10655"},"modified":"2018-03-13T09:34:00","modified_gmt":"2018-03-13T09:34:00","slug":"map-join-in-hive","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/","title":{"rendered":"Map Join in Hive | Map Side Join"},"content":{"rendered":"<p><span style=\"font-weight: 400\">In <strong>Apache Hive<\/strong>, there is a feature that we use to speed up Hive queries. Basically, that feature is what we call Map join in Hive. Map Join in Hive is also Called Map Side Join in Hive. However, there are many more insights of Apache Hive Map join. <\/span><\/p>\n<p><span style=\"font-weight: 400\">So, in this Hive Tutorial, we will learn the whole concept of Map join in Hive. It includes Parameters, limitations of Map Side Join in Hive, Map Side Join in Hive Syntax. Moreover, we will see several Map Join in hive examples to understand well.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">What is Map Join in Hive?<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Apache Hive Map Join is also known as Auto Map Join, or Map Side Join, or Broadcast Join. <\/span><br \/>\n<span style=\"font-weight: 400\">There is one more join available that is Common Join or Sort Merge Join. <\/span><\/p>\n<p><span style=\"font-weight: 400\">However, there is a major issue with that it there is too much activity spending on shuffling data around. <\/span><span style=\"font-weight: 400\">So, as a result, that slows the Hive Queries. Hence, to speed up the Hive queries, we can use Map Join in Hive.<\/span><\/p>\n<p><span style=\"font-weight: 400\"> Also, we use Hive Map Side Join since one of the tables in the join is a small table and can be loaded into memory. So that a join could be performed within a mapper without using a Map\/Reduce step.<\/span><\/p>\n<div id=\"attachment_10656\" style=\"width: 1210px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-10656\" class=\"wp-image-10656 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-01.jpg\" alt=\"Map Join\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-01.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><p id=\"caption-attachment-10656\" class=\"wp-caption-text\">Working of Map Side Join in Hive<\/p><\/div>\n<p><span style=\"font-weight: 400\">Although even if queries frequently depend on small table joins, usage of map joins speed up queries\u2019 execution. Moreover, it is the type of join where a smaller table is loaded into memory and the join is done in the map phase of the MapReduce job.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Basically, before the original <strong>MapReduce<\/strong> task, its first step is to create a MapReduce local task.<\/span> However, from <strong>HDFS<\/strong> this map\/reduce task read data of the small table. Further save it into an in-memory hash table, then into a hash table file.<\/p>\n<p>Afterward, it moves the hash table file to the <strong>Hadoop<\/strong> Distributed Cache while original join MapReduce task starts, which will populate the file to each mapper\u2019s local disk. Hence, in this way, all the mapper can load this hash table file into the memory and then do the join in Map stage.<\/p>\n<p><span style=\"font-weight: 400\">So, let\u2019s understand this with an example. let&#8217;s suppose, for a join with big table A and small table B, for every mapper for table A, Table B is read completely. Since the smaller table is loaded into memory at first. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Afterward, join is performed in the map phase of the MapReduce job, no reducer is needed and reduce phase is skipped. However, map joins in Hive are way faster than the regular joins since no reducers are necessary.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Parameters of Hive Map Side Join<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Moreover, let\u2019s discuss \u00a0the Hive map side join options below:<\/span><\/p>\n<h3><span style=\"font-weight: 400\">a. hive.auto.convert.join<\/span><\/h3>\n<p><span style=\"font-weight: 400\">However, this option set true, by default. Moreover, when a table with a size less than 25 MB (hive.mapjoin.smalltable.filesize) is found, When it is enabled, during joins, the joins are converted to map-based joins.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">b. Hive.auto.convert.join.noconditionaltask<\/span><\/h3>\n<p><span style=\"font-weight: 400\">When there comes a scenario while three or more tables involve in the join condition. Further, Hive generates three or more map-side joins with an assumption that all tables are of smaller size by using hive.auto.convert.join. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Moreover, we can combine three or more map-side joins into a single map-side join if the size of the n-1 table is less than 10 MB using hive.auto.convert.join.noconditionaltask. Basically, this rule define by hive.auto.convert.join.noconditionaltask.size.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Limitations of Map Join in Hive<\/span><\/h2>\n<p>Below are some limitations of Map Side join in Hive:<\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">First, the major restriction is, w<\/span><span style=\"font-weight: 400\">e can never convert Full outer joins to map-side joins.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">However, it is possible to convert a left-outer join to a map-side join in the Hive. However, only possible since the right table that is to the right side of the join conditions, is lesser than 25 MB in size.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Also, we can convert a right-outer join to a map-side join in the Hive. Similarly, only possible if the left table size is lesser than 25 MB.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400\">How to Identify Hive Map Join?<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Basically, we will see Hive Map Side Join Operator just below Map Operator Tree while using EXPLAIN command.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Other<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Although, we can use the hint to specify the query using Map Join in Hive.<\/span> Hence, below an example shows that smaller table is the one put in the hint, and force to cache table B manually.<span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Select \/*+ MAPJOIN(b) *\/ a.key, a.value from a join b on a.key = b.key<\/span><br \/>\n<strong>For Example,<\/strong><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">hive&gt; set hive.auto.convert.join=true;\nhive&gt; set hive.auto.convert.join.noconditionaltask=true;\nhive&gt; set hive.auto.convert.join.noconditionaltask.size=20971520\nhive&gt; set hive.auto.convert.join.use.nonstaged=true;\nhive&gt; set hive.mapjoin.smalltable.filesize = 30000000;<\/pre>\n<h2><span style=\"font-weight: 400\">Map Join in Hive Example<\/span><\/h2>\n<p><span style=\"font-weight: 400\">While passwords table is huge here, and the passwords3 table is a very small table.<\/span><br \/>\n<strong>For example,\u00a0<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">hive&gt; explain select a.* from passwords a,passwords3 b where a.col0=b.col0;\nOK\nSTAGE DEPENDENCIES:\n Stage-4 is a root stage\n Stage-3 depends on stages: Stage-4\n Stage-0 is a root stage\n\nSTAGE PLANS:\n Stage: Stage-4\n   Map Reduce Local Work\n     Alias -&gt; Map Local Tables:\n       b\n         Fetch Operator\n           limit: -1\n     Alias -&gt; Map Local Operator Tree:\n       b\n         TableScan\n           alias: b\n           Statistics: Num rows: 1 Data size: 31 Basic stats: COMPLETE Column stats: NONE\n           HashTable Sink Operator\n             condition expressions:\n               0 {col0} {col1} {col2} {col3} {col4} {col5} {col6}\n               1 {col0}\n             keys:\n               0 col0 (type: string)\n               1 col0 (type: string)\n\n Stage: Stage-3\n   Map Reduce\n     Map Operator Tree:\n         TableScan\n           alias: a\n           Statistics: Num rows: 9963904 Data size: 477218560 Basic stats: COMPLETE Column stats: NONE\n           Map Join Operator\n             condition map:\n                  Inner Join 0 to 1\n             condition expressions:\n               0 {col0} {col1} {col2} {col3} {col4} {col5} {col6}\n               1 {col0}\n             \nkeys:\n               0 col0 (type: string)\n               1 col0 (type: string)\n             outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col9\n             Statistics: Num rows: 10960295 Data size: 524940416 Basic stats: COMPLETE Column stats: NONE\n             Filter Operator\n               predicate: (_col0 = _col9) (type: boolean)\n               Statistics: Num rows: 5480147 Data size: 262470184 Basic stats: COMPLETE Column stats: NONE\n               Select Operator\n                 expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string)\n                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6\n                 Statistics: Num rows: 5480147 Data size: 262470184 Basic stats: COMPLETE Column stats: NONE\n                 File Output Operator\n                   compressed: false\n                   Statistics: Num rows: 5480147 Data size: 262470184 Basic stats: COMPLETE Column stats: NONE\n                   table:\n                       input format: org.apache.hadoop.mapred.TextInputFormat\n                       output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat\n                       serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe\n     Local Work:\n       Map Reduce Local Work\n\n Stage: Stage-0\n   Fetch Operator\n     limit: -1<\/pre>\n<p><span style=\"font-weight: 400\">Time taken: 0.1 seconds, Fetched: 63 row(s)<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Tips on Map Join in Hive<\/span><\/h2>\n<p><strong>i. At first, auto convert shuffle\/common join to map join.<\/strong><br \/>\nHowever, we have 3 parameters are related:<br \/>\nset hive.auto.convert.join=true;<br \/>\n<span style=\"font-weight: 400\">set hive.auto.convert.join.noconditionaltask=true;<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">set hive.auto.convert.join.noconditionaltask.size=10000000;<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">At frist, by default, it is starting from Hive 0.11, hive.auto.convert.join=true.<\/span><\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Moreover, by setting hive.auto.convert.join=false we can disable this feature.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">However, common join can convert to map join automatically, when hive.auto.convert.join.noconditionaltask=true, if estimated size of small table(s) is smaller than hive.auto.convert.join.noconditionaltask.size(default 10MB).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Also, according to statistics we know estimated &#8220;Table b&#8217;s Data Size=31&#8221;, from above SQL plan output.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Moreover, if &#8220;set hive.auto.convert.join.noconditionaltask.size = 32;&#8221;, the explain output shows map join operator:<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Map Join Operator<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Further, if &#8220;set hive.auto.convert.join.noconditionaltask.size = 31;&#8221;, then the join becomes common join operator:<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Join Operator.<\/span><\/li>\n<\/ul>\n<p><strong>ii. Second, to force to use the map join we can use &#8220;MAPJOIN&#8221;.<\/strong><br \/>\n<span style=\"font-weight: 400\">At first, make sure below parameter is set to false(Default is true in Hive 0.13).<\/span><br \/>\n<span style=\"font-weight: 400\">set hive.ignore.mapjoin.hint=false;<\/span><br \/>\n<span style=\"font-weight: 400\">Then:<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">select \/*+ MAPJOIN(a) *\/ a.* from passwords a, passwords2 b where a.col0=b.col0 ;<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Conclusion<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Hence we have the whole concept of <\/span><span style=\"font-weight: 400\">Map Join in Hive. However, it includes parameter and Limitations of Map side Join in Hive. <\/span><span style=\"font-weight: 400\">Moreover, we have seen the Map Join in Hive example\u00a0also to understand it well. <\/span><\/p>\n<p><span style=\"font-weight: 400\">In the next article, we will see <strong>Bucket Map Join in Hive\u00a0<\/strong>and <strong>Skew Join in Hive<\/strong>. Furthermore, if You have any query, feel free to ask in the comment section. \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Apache Hive, there is a feature that we use to speed up Hive queries. Basically, that feature is what we call Map join in Hive. Map Join in Hive is also Called Map&#46;&#46;&#46;<\/p>\n","protected":false},"author":7,"featured_media":10786,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[5749,5750,8257,8258,8519,8521,8530,9406,15818,15819],"class_list":["post-10655","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hive","tag-hive-map-join","tag-hive-map-side-join","tag-limitations-of-map-join-in-hive","tag-limitations-of-map-side-join-in-hive","tag-map-join","tag-map-join-in-hive-example","tag-map-side-join-in-hive-example","tag-parameters-of-hive-map-side-join","tag-what-is-map-join-in-hive","tag-what-is-map-side-join-in-hive"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Map Join in Hive | Map Side Join - DataFlair<\/title>\n<meta name=\"description\" content=\"What is Map Join in Hive,Parameters of Hive Map Side Join,Limitations of Hive Map join, Identify Hive Map Side Join,Map Join in Hive Example,Map Join tip\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Map Join in Hive | Map Side Join - DataFlair\" \/>\n<meta property=\"og:description\" content=\"What is Map Join in Hive,Parameters of Hive Map Side Join,Limitations of Hive Map join, Identify Hive Map Side Join,Map Join in Hive Example,Map Join tip\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-13T09:34:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-in-Hive-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Map Join in Hive | Map Side Join - DataFlair","description":"What is Map Join in Hive,Parameters of Hive Map Side Join,Limitations of Hive Map join, Identify Hive Map Side Join,Map Join in Hive Example,Map Join tip","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:\/\/data-flair.training\/blogs\/map-join-in-hive\/","og_locale":"en_US","og_type":"article","og_title":"Map Join in Hive | Map Side Join - DataFlair","og_description":"What is Map Join in Hive,Parameters of Hive Map Side Join,Limitations of Hive Map join, Identify Hive Map Side Join,Map Join in Hive Example,Map Join tip","og_url":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-03-13T09:34:00+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-in-Hive-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/beb0cab24b7aa54423a3b50e669a9dcd"},"headline":"Map Join in Hive | Map Side Join","datePublished":"2018-03-13T09:34:00+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/"},"wordCount":1086,"commentCount":5,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-in-Hive-01.jpg","keywords":["Hive Map join","Hive Map Side join","Limitations of Map Join in Hive","Limitations of Map Side Join in Hive","Map Join","Map Join in Hive Example","Map Side Join in Hive Example","Parameters of Hive Map Side Join","What is Map Join in Hive","What is Map Side Join in Hive"],"articleSection":["Hive Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/","url":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/","name":"Map Join in Hive | Map Side Join - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-in-Hive-01.jpg","datePublished":"2018-03-13T09:34:00+00:00","description":"What is Map Join in Hive,Parameters of Hive Map Side Join,Limitations of Hive Map join, Identify Hive Map Side Join,Map Join in Hive Example,Map Join tip","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/map-join-in-hive\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-in-Hive-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/03\/Map-Join-in-Hive-01.jpg","width":1200,"height":628,"caption":"What is Map Join in Hive"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/map-join-in-hive\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Hive Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/hive\/"},{"@type":"ListItem","position":3,"name":"Map Join in Hive | Map Side Join"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/beb0cab24b7aa54423a3b50e669a9dcd","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c322416204232f4dd97ef3901b0a499a5d34d7ba7fe333f4bfe53a907873d293?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team specializes in creating clear, actionable content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Backed by industry expertise, we make learning easy and career-oriented for beginners and pros alike.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam3\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/10655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=10655"}],"version-history":[{"count":0,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/10655\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/10786"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=10655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=10655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=10655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}