Job Agent cannot find file on mounted network drive

Biersepp
Biersepp New Altair Community Member
edited November 5 in Community Q&A
Hi all, 

I have a RM 9.7 docker implementation on a Windows Server 2019 VM with currently one Job Agent in the queue. 
I tried to access a file on a mounted network drive which is both accessible by my local work station and with the VM with the same file path. 
The Job Agent however does not look at this drive but seems to search inside the containers repository and throws an error: 

File not found
The file 'java.io.FileNotFoundException: /rapidminer-jobagent/home/data/containers/1/Z:\\xyz\zyx.csv (No such file or directory)' does not exist.

Has anyone got an idea how I can make the Job Agent look in the right path? The docker runs AI Hub in an emulated Linux instance. Might be part of the problem I guess. 

Thanks or your help!

Biersepp
Tagged:

Answers

  • aschaferdiek
    aschaferdiek New Altair Community Member
    edited January 2021
    Hi, sorry for the delay, maybe you've resolved it already but I still like to reply and outline the options you have.

    The problem is that any direct file operator tries to resolve absolute paths, but it cannot in your context. In the Job Agent Linux docker container environment, there's no Z:\ because that's not a valid UNIX path and thus it's handled as relative path starting from the execution's unit RAPIDMINER_HOME directory (the container working directory).

    There are two possible solutions and I highly recommend using the second 'repository' approach:
    1. Docker host bind/mount: Bind Z:\ into the Job Agent docker container. This will allow you to specify absolute paths in the operator, e.g. bind Z:\testFolder to /myFolder in the docker container. If you like to access Z:\testFolder\xyz.csv in your process, change the file path in the operator to /myFolder/xyz.csv. You can also host bind entire Z:\ if you like, e.g. to /myNetworkDriveZ and adjust file path to /myNetworkDriveZ/testFolder/xyz.csv.
    2. (recommended) Although binding host drives works, I'd recommend that you place the .csv file directly into Server's/AI Hub's repository. Then you have consistent files residing next to each other. If the contents of the drive change frequently you could also think about using our REST API to periodically push the changed CSV file to the repository or starting from 9.7, utilize projects and with 9.8 utilize projects with large file support. Network drives might have hick-ups, connection errors etc. If you place it directly in the repository you know that this is going to work regardless of any external drive being available.
    I hope this helped.

    Best,
    Alex