Did you figured out how to run a command under a user. Have the same issue. Have a next code:
private def setupTokens(username: String): ByteBuffer = {
val credentials = UserGroupInformation.createProxyUser(username, UserGroupInformation.getCurrentUser).getCredentials
val dob = new DataOutputBuffer();
credentials.writeTokenStorageToStream(dob);
ByteBuffer.wrap(dob.getData(), 0, dob.getLength()).duplicate();
}
val cCLC = Records.newRecord(classOf[ContainerLaunchContext])
cCLC.setTokens(setupTokens(user))
But it still running under yarn user.