mkdir /tmp/sqltables
spark2-shell
val dbname = "some_db"
val targetdir = "/tmp/sqltables"
spark.sql(s"show tables in `${dbname}`").collect.foreach(r => {
import scala.util.{Try,Success,Failure}
import reflect.io.File
val db = r.getString(0)
val table = r.getString(1)
val sql = s"show create table `${db}`.`${table}`"
println(s"INFO: db: ${db}, table: ${table}, sql: ${sql}")
Try(spark.sql(sql).first.getString(0)) match {
case Success(craetetable) =>
File(s"${targetdir}/${db}.${table}.sql").writeAll(craetetable)
case Failure(e) =>
println(s"ERROR: can't call sql: ${sql}")
}
})