Transcompiler for Automatic MapReduce Job Generation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software programs are not easily scalable to handle large datasets, as they often require significant expertise to adapt to distributed computing frameworks like MapReduce, leading to inefficiencies and high costs in porting existing software to distributed systems.

Innovation Solution

A transcompiler is used to identify loops in non-distributed source code, generate MapReduce jobs, and optimize them using machine learning algorithms, enabling automatic porting of data-driven programming languages to distributed frameworks without the need for manual expertise.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If existing software programs are ported to distributed computing frameworks manually, then the software can process large datasets, but it requires significant developer expertise and time, increasing cost and complexity

Engineering Contradiction:
Improveprocessing capability for large datasetsVSAvoidporting time and developer expertise required
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system automatically analyzes non-distributed source code and generates distributed MapReduce jobs without requiring manual intervention from developers. The transcompiler self-services by parsing the original code, identifying loops and data processing logic, and automatically generating equivalent distributed tasks, thereby eliminating the time and expertise loss associated with manual porting.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

A transcompiler serves as an intermediary between non-distributed source code and distributed MapReduce frameworks. This intermediary tool translates the original programming language into MapReduce jobs, handling the complexity of conversion and enabling existing software to run on distributed systems without direct developer involvement in the translation process.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If software is rewritten using MapReduce, then scalability is achieved, but it requires specialized developer knowledge and increases the risk of incorrect implementation

Engineering Contradiction:
Improvescalability to distributed frameworksVSAvoidrisk of incorrect mapper key selection
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The transcompiler automatically determines mapper keys and generates MapReduce jobs by analyzing the original source code's data processing logic. This self-service approach eliminates human error in key selection and ensures reliable translation while maintaining scalability, as the system independently handles the complex task of generating correct distributed tasks from non-distributed code.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The manual mechanical process of selecting mapper keys and writing MapReduce code is replaced by an automated computational system. The transcompiler uses algorithmic analysis to substitute human decision-making with automated code generation, ensuring consistent and error-free translation while preserving the scalability benefits of MapReduce.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

3Productivity

If a transcompiler automatically generates distributed software packages, then porting speed increases, but the complexity of the compilation process increases

Engineering Contradiction:
Improveporting speed of non-distributed softwareVSAvoidtranscompiler and code analysis complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The transcompiler divides the complex analysis process into segmented steps: parsing source code, identifying loops, determining data processing logic, and generating MapReduce jobs. This segmentation manages complexity by breaking down the translation task into manageable phases, each handled by specific processing modules within the transcompiler system.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The transcompiler acts as an intermediary layer that encapsulates the complexity of distributed framework integration. By placing the complexity within this intermediate translation layer, the original non-distributed code remains simple and unchanged, while the transcompiler handles all the complex analysis and generation tasks internally, producing simplified MapReduce output.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Loss of time

If existing software is not rewritten for distributed computing, then development time is maintained, but processing speed for large datasets decreases

Engineering Contradiction:
Improvesoftware development timeVSAvoidprocessing speed on large datasets
Core Design Contradiction:
Loss of timeVSSpeed

Solution Approach 1:

The transcompiler creates a copy of the original non-distributed software's processing logic and translates it into the distributed MapReduce paradigm. This copying approach preserves the original functionality and development time investment while transforming the execution model to achieve parallel processing speedups on large datasets, effectively decoupling development time from processing performance.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11379203B2Systems and methods for generating distributed software packages using non-distributed source code
Publication Date: 2022.07.05 VISA INTERNATIONAL SERVICE ASSOCIATION
  • US11379203B2 patent drawing
  • US11379203B2 patent drawing
  • US11379203B2 patent drawing

AI summary

Systems and methods are provided for transcompiling non-distributed source code for a non-distributed software program into a distributed software package for implementation on a distributed computing system. A transcompiler can identify loops within non-distributed source code written in a data-driven language. The transcompiler can generate MapReduce jobs using mapper keys based on grouping indicators associated with each of the loops. The MapReduce jobs can be linked together based on input-output connections of the loops in the non-distributed source code. Then, the transcompiler can generate a distributed software package including the generated MapReduce jobs to implement the same functionality as the non-distributed source code on the distributed computing system, thereby improving the speed of execution over very large datasets. The distributed software package can be optimized using machine learning searching algorithms. The distributed software package can also be optimized based on execution usage statistics.