Under the hood, the Spark connector in HBase (which works only on Spark 1.x BTW, not on Spark 2.x yet due to incompatible changes in the latter) obtains proper tokens from HBase in the driver/runner stage and then uses these tokens for authentication on the executor side, where a TGT is unavailable.

Modelling your implementation after the shown example sources should yield you the same behaviour. The implementation does not use a pure HBase Java API such as what the OP was using here originally.