This ConfigReader uses the active SQLConf to look up keys (variables) first. It then binds the same variable provider to handle the following prefixes:
spark
sparkconf
hivevar
hiveconf
Note
By default, the ConfigReader handles the other two prefixes:
env (for environment variables)
system (for Java system properties)
If a reference cannot be resolved, the original string will be retained.
With spark.sql.variable.substitute enabled, substitute requests the ConfigReader to substitute variables. Otherwise, substitute does nothing and simply returns the given input.