[發明專利]代碼轉換方法及裝置有效
| 申請號: | 201310482057.5 | 申請日: | 2013-10-15 |
| 公開(公告)號: | CN103593401A | 公開(公告)日: | 2014-02-19 |
| 發明(設計)人: | 林學練;葉玥;崔曉龍;胡春明 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 劉芳 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 代碼 轉換 方法 裝置 | ||
1.一種代碼轉換方法,其特征在于,包括:
根據類結構化查詢語言SQL,獲得與所述類SQL對應的抽象語法樹中的各節點分別對應的各作業;
將當前各作業中,任一未被合并且可合并的作業作為第一作業,將所述第一作業的相鄰作業中的任一可合并的作業作為第二作業;
根據獲取的所述第一作業的算子、所述第二作業的算子和預設的各作業類型對應的算子,確定所述第一作業的作業類型和所述第二作業的作業類型;
若所述第二作業為所述第一作業的前驅作業,則將所述第一作業作為第一作業模板,將所述第二作業作為第二作業模板,否則將所述第一作業作為所述第二作業模板,將所述第二作業作為所述第一作業模板;
根據預設的與所述第一作業模板的作業類型和所述第二作業模板的作業類型對應的合并模型,將所述第一作業模板和所述第二作業模板合并為第三作業;
將所述第三作業作為所述第一作業,并再次執行所述將所述第一作業的相鄰作業中的任一可合并的作業作為第二作業的步驟,直至所述第一作業的相鄰作業中不存在可合并的作業;
再次執行所述將當前各作業中任一未被合并且可合并的作業作為第一作業的步驟,直至當前未被合并的作業中不存在可合并的作業;
根據當前的各作業,獲得所述類SQL對應的映射化簡MapReduce代碼。
2.根據權利要求1所述的方法,其特征在于,所述根據獲取的所述第一作業的算子和預設的各作業類型對應的算子,確定所述第一作業的作業類型,包括:
獲取所述第一作業的算子;
若所述第一作業的算子包括聚合Aggregation算子,則所述第一作業的作業類型為SPJA類型;
若所述第一作業的算子包括過濾Filter算子、投影Project算子、連接Join算子、分組Group算子和排序Sort算子中一個或多個的組合,且不包括所述Aggregation算子,則所述第一作業的作業類型為SPJ類型;
若所述第一作業的算子僅包括所述Filter算子、所述Project算子或嵌套循環連接Nested-Loop-Join算子,則所述第一作業的作業類型為SP類型。
3.根據權利要求2所述的方法,其特征在于,所述根據預設的與所述第一作業模板的作業類型和所述第二作業模板的作業類型對應的合并模型,將所述第一作業模板和所述第二作業模板進行合并為第三作業,包括:
若所述第一作業模板的作業類型為SPJ類型,所述第二作業模板的作業類型為SPJ類型或SPJA類型,則將第一作業合并模型作為所述合并模型之一,所述第一作業合并模型用于將所述第一作業模板的Map任務和所述第二作業模板的Map任務合并為所述第三作業的Map任務,將所述第一作業模板的Shuffle任務和所述第二作業模板的Shuffle任務合并為所述第三作業的Shuffle任務,將所述第一作業模板的Reduce任務和所述第二作業模板的Reduce任務合并為所述第三作業的Reduce任務;
若所述第一作業模板的作業類型為SPJA類型,所述第二作業模板的作業類型為SPJ類型或SPJA類型,則將第二作業合并模板作為所述合并模型之一,所述第二作業合并模型用于將所述第一作業模板的Map任務和所述第二作業模板的Map任務中的部分Map任務合并為所述第三作業的Map任務,將所述第一作業模板的Shuffle任務和所述第二作業模板的Shuffle任務合并為所述第三作業的Shuffle任務,將所述第一作業模板的Reduce任務、所述第二作業模板的Reduce任務、及所述第二作業模板的Map任務中除所述部分Map任務以外的任務合并為所述第三作業的Reduce任務,所述部分Map任務的處理對象不屬于所述第一作業模板的Aggregation算子類型對應的處理對象;
若所述第一作業模板的作業類型為SP類型,所述第二作業模板的作業類型為SPJ類型或SPJA類型,則將第三作業合并模板作為所述合并模型之一,所述第三作業合并模型用于將所述第二作業模板的Map任務作為所述第三作業的Map任務,將所述第二作業模板的Shuffle作為所述第三作業的Shuffle任務,將所述第一作業模板的Map任務和所述第二作業模板的Reduce任務合并為所述第三作業的Reduce任務;
若所述第一作業模板的作業類型為SPJ類型或SPJA類型,所述第二作業模板的作業類型為SP類型,則將第四作業合并模板作為所述合并模型之一,所述第四作業合并模型用于將所述第一作業模板的Map任務作為所述第三作業的Map任務,將所述第一作業模板的Shuffle作為所述第三作業的Shuffle任務,將所述第一作業模板的Reduce任務和所述第二作業模板的Map任務合并為所述第三作業的Reduce任務;
若所述合并模型的數量為一個,則將根據所述合并模型獲得的作業作為所述第三作業;
若所述合并模型的數量為多個,則分別估算根據所述多個合并模型獲得的作業的執行時間,并將所述執行時間最短的作業作為所述第三作業。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310482057.5/1.html,轉載請聲明來源鉆瓜專利網。





