I think your query might work if you remove the ordering applied in the end.
Just try this:
CONCAT(CAST(fullVisitorId AS string),CAST(visitId AS string)) AS session,
UNNEST(hits) AS hits
_TABLE_SUFFIX BETWEEN "20160801"
I would suggest you to avoid ORDER BY operation(or try applying it in a limited result set) in such cases because it is quite expensive and cannot be processed in parallel.