Search code examples
groovydatastaxdatastax-enterprisedatastax-enterprise-graph

Datastax 5.1 Graph loader - loading uniform files from multiple subdirectories


Graph loader can load files from an explicitly defined directory, but currently has no built in way to automatically recursively load uniform files from multiple subdirectories.


Solution

  • I couldn't find any examples for loading uniform files from multiple subdirectories so after figuring it out I thought it would be helpful to post this here to help someone else in the future. Does anyone have a groovier way?

    //configure graphloader
    config dryrun: false, load_vertex_threads: 2, load_edge_threads: 3,
    read_threads: 1, preparation: true, create_schema: false,
    abort_on_prep_errors: true
    
    import java.io.File as javaFile; //this must be aliased so as to not conflict with graphloader's File.directory()
    
    inputBaseDir = /path/to/base/dir
    //base directory has many subdirectories that have many uniform files to load
    
    //create a list of the subdirectory paths
    def list = []
    new javaFile(inputBaseDir).eachDir() { dir ->
        list << dir.getAbsolutePath()
    }
    
    //loop through the list of subdirectory paths
    
    for (item in list){
        def fileBuilder = File.directory(item)
        def theData = fileBuilder.map{
            it["specificDataLabel"] = it["data"]["specificData"][0];
            it["otherSpecificDataLabel"] = it["data"]["otherSpecificData"][0];
            it.remove("data")
            it
        }
    
        load(theData).asVertices {
            label "theLabel"
            key "specificDataLabel"
            vertexProperty "otherSpecificDataLabel",{
                value "metaPropertyLabel"
                value "otherMetaPropertyLabel"
            }
        }