Use the getDataSetFromSql() method to perform a lazy evaluation of a SELECT query involving non-native tables. For example:
scala> ForeignServer.getDatasetFromSql("select * from default.nn1") res0: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [number: int, name: string]
The query result DataSet (res0 in the example) is used like any other Spark SQL DataSet object and is only evaluated when an action is called.