pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

<small id='qDZrG'></small><noframes id='qDZrG'>

    <tfoot id='qDZrG'></tfoot>
    <legend id='qDZrG'><style id='qDZrG'><dir id='qDZrG'><q id='qDZrG'></q></dir></style></legend>

      <i id='qDZrG'><tr id='qDZrG'><dt id='qDZrG'><q id='qDZrG'><span id='qDZrG'><b id='qDZrG'><form id='qDZrG'><ins id='qDZrG'></ins><ul id='qDZrG'></ul><sub id='qDZrG'></sub></form><legend id='qDZrG'></legend><bdo id='qDZrG'><pre id='qDZrG'><center id='qDZrG'></center></pre></bdo></b><th id='qDZrG'></th></span></q></dt></tr></i><div class="jmhl7mo" id='qDZrG'><tfoot id='qDZrG'></tfoot><dl id='qDZrG'><fieldset id='qDZrG'></fieldset></dl></div>
      • <bdo id='qDZrG'></bdo><ul id='qDZrG'></ul>
      1. Spark SQL/Hive 查詢永遠(yuǎn)需要加入

        Spark SQL/Hive Query Takes Forever With Join(Spark SQL/Hive 查詢永遠(yuǎn)需要加入)

          <tfoot id='JwRW7'></tfoot>
          <i id='JwRW7'><tr id='JwRW7'><dt id='JwRW7'><q id='JwRW7'><span id='JwRW7'><b id='JwRW7'><form id='JwRW7'><ins id='JwRW7'></ins><ul id='JwRW7'></ul><sub id='JwRW7'></sub></form><legend id='JwRW7'></legend><bdo id='JwRW7'><pre id='JwRW7'><center id='JwRW7'></center></pre></bdo></b><th id='JwRW7'></th></span></q></dt></tr></i><div class="sg8pigi" id='JwRW7'><tfoot id='JwRW7'></tfoot><dl id='JwRW7'><fieldset id='JwRW7'></fieldset></dl></div>
          • <bdo id='JwRW7'></bdo><ul id='JwRW7'></ul>

              <legend id='JwRW7'><style id='JwRW7'><dir id='JwRW7'><q id='JwRW7'></q></dir></style></legend>
                <tbody id='JwRW7'></tbody>
            1. <small id='JwRW7'></small><noframes id='JwRW7'>

                • 本文介紹了Spark SQL/Hive 查詢永遠(yuǎn)需要加入的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

                  問題描述

                  所以我正在做一些應(yīng)該很簡(jiǎn)單的事情,但顯然它不在 Spark SQL 中.

                  So I'm doing something that should be simple, but apparently it's not in Spark SQL.

                  如果我在 MySQL 中運(yùn)行以下查詢,查詢會(huì)在幾分之一秒內(nèi)完成:

                  If I run the following query in MySQL, the query finishes in a fraction of a second:

                  SELECT ua.address_id
                  FROM user u
                  inner join user_address ua on ua.address_id = u.user_address_id
                  WHERE u.user_id = 123;
                  

                  但是,在 Spark (1.5.1) 下的 HiveContext 中運(yùn)行相同的查詢需要超過 13 秒.添加更多連接會(huì)使查詢運(yùn)行很長(zhǎng)時(shí)間(超過 10 分鐘).我不確定我在這里做錯(cuò)了什么以及如何加快速度.

                  However, running the same query in HiveContext under Spark (1.5.1) takes more than 13 seconds. Adding more joins makes the query run for a very very long time (over 10 minutes). I'm not sure what I'm doing wrong here and how I can speed things up.

                  這些表是 MySQL 表,它們作為臨時(shí)表加載到 Hive 上下文中.它在單個(gè)實(shí)例中運(yùn)行,數(shù)據(jù)庫(kù)在遠(yuǎn)程機(jī)器上.

                  The tables are MySQL tables that are loaded into the Hive Context as temporary tables.This is running in a single instance, with the database on a remote machine.

                  • 用戶表大約有 480 萬(wàn)行.
                  • user_address 表有 350,000 行.

                  表有外鍵字段,但在數(shù)據(jù)庫(kù)中沒有定義明確的 fk 關(guān)系.我正在使用 InnoDB.

                  The tables have foreign key fields, but no explicit fk relationships is defined in the db. I'm using InnoDB.

                  Spark 中的執(zhí)行計(jì)劃:

                  The execution plan in Spark:

                  計(jì)劃:

                  掃描JDBCRelation(jdbc:mysql://.user,[Lorg.apache.spark.Partition;@596f5dfc,{user=, password=, url=jdbc:mysql://, dbtable=user})[address_id#0L,user_address_id#27L]

                  Scan JDBCRelation(jdbc:mysql://.user,[Lorg.apache.spark.Partition;@596f5dfc, {user=, password=, url=jdbc:mysql://, dbtable=user}) [address_id#0L,user_address_id#27L]

                  過濾器 (user_id#0L = 123) 掃描JDBCRelation(jdbc:mysql://.user_address,[Lorg.apache.spark.Partition;@2ce558f3,{user=, password=,url=jdbc:mysql://, dbtable=user_address})[address_id#52L]

                  Filter (user_id#0L = 123) Scan JDBCRelation(jdbc:mysql://.user_address, [Lorg.apache.spark.Partition;@2ce558f3,{user=, password=, url=jdbc:mysql://, dbtable=user_address})[address_id#52L]

                  ConvertToUnsafe ConvertToUnsafe

                  ConvertToUnsafe ConvertToUnsafe

                  TungstenExchange hashpartitioning(address_id#52L) TungstenExchangehashpartitioning(user_address_id#27L) TungstenSort [address_id#52LASC], false, 0 TungstenSort [user_address_id#27L ASC], false, 0

                  TungstenExchange hashpartitioning(address_id#52L) TungstenExchange hashpartitioning(user_address_id#27L) TungstenSort [address_id#52L ASC], false, 0 TungstenSort [user_address_id#27L ASC], false, 0

                  SortMergeJoin [user_address_id#27L], [address_id#52L]

                  SortMergeJoin [user_address_id#27L], [address_id#52L]

                  == 物理計(jì)劃 == TungstenProject [address_id#0L]

                  == Physical Plan == TungstenProject [address_id#0L]

                  推薦答案

                  首先,您執(zhí)行的查詢類型極其低效.至于現(xiàn)在(Spark 1.5.0*)要執(zhí)行這樣的連接,每次執(zhí)行查詢時(shí)都必須對(duì)兩個(gè)表進(jìn)行混洗/散列分區(qū).對(duì)于 users 表,其中 user_id = 123 謂詞最有可能被下推,但仍然需要對(duì) user_address.

                  First of all type of query you perform is extremely inefficient. As for now (Spark 1.5.0*) to perform join like this, both tables has to be shuffled / hash-partitioned each time query is executed. It shouldn't be a problem in case of users table where user_id = 123 predicate is most likely pushed-down but still requires full shuffle on user_address.

                  此外,如果表只注冊(cè)而不緩存,那么每次執(zhí)行此查詢都會(huì)從 MySQL 獲取整個(gè) user_address 表到 Spark.

                  Moreover, if tables are only registered and not cached, then every execution of this query will fetch a whole user_address table from MySQL to Spark.

                  我不確定我在這里做錯(cuò)了什么以及如何加快速度.

                  I'm not sure what I'm doing wrong here and how I can speed things up.

                  不清楚為什么要將 Spark 用于應(yīng)用程序,但單機(jī)設(shè)置、小數(shù)據(jù)和查詢類型表明 Spark 不適合這里.

                  It is not exactly clear why you want to use Spark for application but single machine setup, small data and type of queries suggest that Spark is not a good fit here.

                  一般來說,如果應(yīng)用程序邏輯需要單條記錄訪問,那么 Spark SQL 的性能就不會(huì)很好.它專為分析查詢而設(shè)計(jì),而不是作為 OLTP 數(shù)據(jù)庫(kù)的替代品.

                  Generally speaking if application logic requires a single record access then Spark SQL won't perform well. It is designed for analytical queries not as a OLTP database replacement.

                  如果單個(gè)表/數(shù)據(jù)框小得多,您可以嘗試廣播.

                  If a single table / data frame is much smaller you could try broadcasting.

                  import org.apache.spark.sql.DataFrame
                  import org.apache.spark.sql.functions.broadcast
                  
                  val user: DataFrame = ???
                  val user_address: DataFrame = ???
                  
                  val userFiltered = user.where(???)
                  
                  user_addresses.join(
                    broadcast(userFiltered), $"address_id" === $"user_address_id")
                  

                  <小時(shí)>

                  * 這應(yīng)該在 Spark 1.6.0 中改變,SPARK-11410應(yīng)該啟用持久表分區(qū).

                  這篇關(guān)于Spark SQL/Hive 查詢永遠(yuǎn)需要加入的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                  【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

                  相關(guān)文檔推薦

                  How to use windowing functions efficiently to decide next N number of rows based on N number of previous values(如何有效地使用窗口函數(shù)根據(jù) N 個(gè)先前值來決定接下來的 N 個(gè)行)
                  reuse the result of a select expression in the quot;GROUP BYquot; clause?(在“GROUP BY中重用選擇表達(dá)式的結(jié)果;條款?)
                  Does ignore option of Pyspark DataFrameWriter jdbc function ignore entire transaction or just offending rows?(Pyspark DataFrameWriter jdbc 函數(shù)的 ignore 選項(xiàng)是忽略整個(gè)事務(wù)還是只是有問題的行?) - IT屋-程序員軟件開發(fā)技
                  Error while using INSERT INTO table ON DUPLICATE KEY, using a for loop array(使用 INSERT INTO table ON DUPLICATE KEY 時(shí)出錯(cuò),使用 for 循環(huán)數(shù)組)
                  pyspark mysql jdbc load An error occurred while calling o23.load No suitable driver(pyspark mysql jdbc load 調(diào)用 o23.load 時(shí)發(fā)生錯(cuò)誤 沒有合適的驅(qū)動(dòng)程序)
                  How to integrate Apache Spark with MySQL for reading database tables as a spark dataframe?(如何將 Apache Spark 與 MySQL 集成以將數(shù)據(jù)庫(kù)表作為 Spark 數(shù)據(jù)幀讀取?)
                    <tfoot id='RnxHT'></tfoot>
                    • <bdo id='RnxHT'></bdo><ul id='RnxHT'></ul>

                        <legend id='RnxHT'><style id='RnxHT'><dir id='RnxHT'><q id='RnxHT'></q></dir></style></legend>

                          <tbody id='RnxHT'></tbody>

                            <i id='RnxHT'><tr id='RnxHT'><dt id='RnxHT'><q id='RnxHT'><span id='RnxHT'><b id='RnxHT'><form id='RnxHT'><ins id='RnxHT'></ins><ul id='RnxHT'></ul><sub id='RnxHT'></sub></form><legend id='RnxHT'></legend><bdo id='RnxHT'><pre id='RnxHT'><center id='RnxHT'></center></pre></bdo></b><th id='RnxHT'></th></span></q></dt></tr></i><div class="7fehr7i" id='RnxHT'><tfoot id='RnxHT'></tfoot><dl id='RnxHT'><fieldset id='RnxHT'></fieldset></dl></div>

                            <small id='RnxHT'></small><noframes id='RnxHT'>

                          • 主站蜘蛛池模板: 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 专业甜品培训学校_广东糖水培训_奶茶培训_特色小吃培训_广州烘趣甜品培训机构 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 电子巡更系统-巡检管理系统-智能巡检【金万码】 | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | 车辆定位管理系统_汽车GPS系统_车载北斗系统 - 朗致物联 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 陕西自考报名_陕西自学考试网 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 中国在职研究生招生信息网| 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 智能终端_RTU_dcm_北斗星空自动化科技| 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 阳光1号桔柚_无核沃柑_柑橘新品种枝条苗木批发 - 苧金网 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 |