API et opérations
HWC expose HiveWarehouseSession comme API principale pour exécuter des opérations Hive depuis Spark.
Créer une session
import com.hortonworks.hwc.HiveWarehouseSession
val hwc = HiveWarehouseSession.session(spark).build()
Opérations sur le catalogue
hwc.showDatabases().show(false)
hwc.showTables().show(false)
hwc.describeTable("db.table").show(false)
hwc.createDatabase("db", true)
hwc.createTable("db.table")
.ifNotExists()
.column("id", "bigint")
.column("v", "string")
.create()
hwc.dropTable("db.table", true, true)
hwc.dropDatabase("db", true, true)
Opérations de lecture et d'écriture
// Lecture
val df = hwc.sql("select * from db.table")
// Écriture
spark.range(0, 100)
.selectExpr("id", "concat('v', id) as v")
.write
.format("com.hortonworks.spark.sql.hive.llap.HiveWarehouseConnector")
.option("database", "db")
.option("table", "table")
.mode("overwrite")
.save()
Transactions ACID
Utiliser commitTxn() pour finaliser les transactions ACID Hive gérées par le connecteur :
hwc.commitTxn()
Fermer la session
hwc.close()