package eu.dnetlib.dhp.common; import static eu.dnetlib.dhp.common.SparkSessionSupport.runWithSparkHiveSession; import java.util.Optional; import org.apache.commons.io.IOUtils; import org.apache.spark.SparkConf; import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import eu.dnetlib.dhp.application.ArgumentApplicationParser; public class ResetHiveDbApplication { private static final Logger log = LoggerFactory.getLogger(ResetHiveDbApplication.class); public static void main(final String[] args) throws Exception { final ArgumentApplicationParser parser = new ArgumentApplicationParser( IOUtils .toString( ResetHiveDbApplication.class .getResourceAsStream( "/eu/dnetlib/dhp/common/reset_hive_db_parameters.json"))); parser.parseArgument(args); Boolean isSparkSessionManaged = Optional .ofNullable(parser.get("isSparkSessionManaged")) .map(Boolean::valueOf) .orElse(Boolean.TRUE); log.info("isSparkSessionManaged: {}", isSparkSessionManaged); final String dbName = Optional .ofNullable(parser.get("dbName")) .orElseThrow(() -> new IllegalArgumentException("missing DB name")); log.info("dbName: {}", dbName); String hiveMetastoreUris = parser.get("hiveMetastoreUris"); log.info("hiveMetastoreUris: {}", hiveMetastoreUris); SparkConf conf = new SparkConf(); conf.set("hive.metastore.uris", hiveMetastoreUris); runWithSparkHiveSession( conf, isSparkSessionManaged, spark -> { runSQL(spark, String.format("DROP DATABASE IF EXISTS %s CASCADE", dbName)); runSQL(spark, String.format("CREATE DATABASE %s", dbName)); }); } protected static void runSQL(SparkSession spark, String sql) { log.info("running SQL '{}'", sql); spark.sqlContext().sql(sql); } }