Hello, Any pointers on what is causing the optimizer to convert broadcast to shuffle join? This join is with a file that is just 4kb in size.
Complete plan --> https://www.dropbox.com/s/apuomw1dg0t1jtc/plan_with_select.txt?dl=0 DAG from UI --> https://www.dropbox.com/s/4xc9d0rdkx2fun8/DAG_with_select.PNG?dl=0 == Optimized Logical Plan == Project [...] +- Join LeftOuter, Some((start_ip#48L = start_ip_num#144L)) :- Project [...] : +- Join Inner, Some((cast(creative_id#9 as bigint) = creative_id#130L)) : :- Project [...] : : +- Join Inner, Some((cast(strategy_id#10 as bigint) = strategy_id#126L)) : : :- Project [...] : : : +- Join LeftOuter, Some((cast(exchange_id#13 as bigint) = id#142L)) : : : :- Project [...] : : : : +- Join LeftOuter, Some((browser_id#59 = technology_key#169)) : : : : :- Project [...] : : : : : +- Join LeftOuter, Some((primary_browser_language#61 = id#166)) : : : : : :- Project [...] : : : : : : +- Filter ((NOT (campaign_id#12 = 0) && (mm_int_cost#36 < 1000000.0)) && ((cost_sum#41 < 1000000.0) && (total_spend#42 < 1000000.0))) : : : : : : +- Relation[...) : : : : : +- Project [id#166,two_letter_code#167] : : : : : +- BroadcastHint : : : : : +- Relation[... : : : : +- BroadcastHint : : : : +- Relation[... : : : +- Project [description#141,id#142L] : : : +- BroadcastHint : : : +- Relation[description#141,id#142L,name#143] JSONRelation == Physical Plan == Project [...] +- SortMergeOuterJoin [start_ip#48L], [start_ip_num#144L], LeftOuter, None :- Sort [start_ip#48L ASC], false, 0 : +- TungstenExchange hashpartitioning(start_ip#48L,480), None : +- Project [...] : +- BroadcastHashJoin [cast(creative_id#9 as bigint)], [creative_id#130L], BuildRight : :- Project [...] : : +- BroadcastHashJoin [cast(strategy_id#10 as bigint)], [strategy_id#126L], BuildRight : : :- Project [...] : : : +- BroadcastHashOuterJoin [cast(exchange_id#13 as bigint)], [id#142L], LeftOuter, None : : : :- Project [...] : : : : +- BroadcastHashOuterJoin [browser_id#59], [technology_key#169], LeftOuter, None : : : : :- Project [...] : : : : : +- SortMergeOuterJoin [primary_browser_language#61], [id#166], LeftOuter, None : : : : : :- Sort [primary_browser_language#61 ASC], false, 0 : : : : : : +- TungstenExchange hashpartitioning(primary_browser_language#61,480), None : : : : : : +- Project [...] : : : : : : +- Filter (((NOT (campaign_id#12 = 0) && (mm_int_cost#36 < 1000000.0)) && (cost_sum#41 < 1000000.0)) && (total_spend#42 < 1000000.0)) : : : : : : +- Scan CsvRelation(<function0>,Some(s3:// : : : : : +- Sort [id#166 ASC], false, 0 : : : : : +- TungstenExchange hashpartitioning(id#166,480), None : : : : : +- Project [id#166,two_letter_code#167] : : : : : +- Scan CsvRelation(<function0>,Some(s3 : : : : +- ConvertToUnsafe : : : : +- Scan CsvRelation(<function0>,Some(s3:// : : : +- Project [description#141,id#142L] : : : +- Scan JSONRelation[description#141,id#142L,name#143] InputPaths: s3:// : : +- Project