Re: sparkSession.sql("sql query") vs df.sqlContext().sql(this.query) ?
Based on my understanding, I think the only difference is the overhead of the selection/creation of SqlContext for the query you have passed. As the table / view is already available for use, sparkSession.sql('your query') should be simple & good enough.
Following uses the session/context by default created and available:
sparkSession.sql("select value from table")
while the following would look for create one & run the query (which I believe is extra overhead):