This project is available as a student work experience opportunity with HPCC Systems. Curious about other projects we are offering? Take a look at our Ideas List.

Student work experience opportunities also exist for students who want to suggest their own project idea. Project suggestions must be relevant to HPCC Systems and of benefit to our open source community. 

Find out about the HPCC Systems Summer Internship Program.

Project Description

There are several situations where it would be useful to reverse the order of a dataset. This could be done more efficiently than a sort.  The change would need to cover the following particular cases:

There is also opportunity for various optimizations - e.g., REVERSE(SORT())->SORT'

The objective of this project is to implement a REVERSE activity in HPCC Systems. The proposal for this project needs to describe the methods that would be used to perform the following:

  1. reverse an incoming stream of rows that can all be held in memory
  2. reverse an incoming stream of rows up to 10% of which can be held in memory 
  3. reverse multiple streams of rows on an ordered set of machines, where the rows supplied on each node must be reversed, and the rows streams must also be reversed between the nodes.

For each example the rows will need to be sequentially output in reverse order.  There is no random access to rows in the incoming row stream.

If you are interested in this project, please contact Jake Smith.

Completion of this project involves:

By the mid term review we would expect you to have:

Mentor

Jake Smith
jake.smith@lexisnexisrisk.com

Backup Mentor: TBD
Contact Details

Skills needed
  • Strong knowledge of C++ required
  • Ability to build and test the HPCC system (guidance will be provided).
  • Ability to write test code. Knowledge of ECL is a requirement and it should be possible to re-use existing code for this purpose. Links are provided below to our ECL training documentation and online courses should you wish to become familiar with the ECL  language.
  • Ability to develop new code within an existing framework
Other resources