package job.modelimport org.apache.spark.sql.SparkSessionobject sparkLocalDatabase_2 {// 伴生对象:存放静态成员(相当于 Java 的 static)val baseSession: SparkSession = SparkSession.builder().master("local[8]") // 使用 5 个 CPU 核心.appName("jobTask")// 1. 仓库目录(存放表数据):使用 Windows 绝对路径.config("spark.sql.warehouse.dir", "E:\\workpath\\sparkproject\\sparkLocalTask\\local_warehouse")// 2. 本地临时目录(存放计算临时文件):使用 Windows 路径(注意转义双反斜杠).config("spark.local.dir", "E:\\workpath\\sparkproject\\sparkLocalTask\\local_tmp")// 3. 内存设置.config("spark.driver.memory", "6g")// 4. 如果你不需要多 Job 并发调度,建议注释掉 FAIR.config("spark.scheduler.mode", "FAIR")// 5.关键配置:指定 Derby 元数据库的位置
// .config("javax.jdo.option.ConnectionURL",
// "jdbc:derby:E:\\workpath\\sparkproject\\sparkLocalTask\\spark_meta;create=true")
// // 6。local模式不连接hive 的时候就不用启动hive支持
// .enableHiveSupport().getOrCreate()def main(args: Array[String]): Unit = {val spark = this.baseSession.newSession()// // 创建一个表
// spark.sql(
// """
// CREATE TABLE IF NOT EXISTS user_log (
// user_id BIGINT,
// action STRING,
// ts TIMESTAMP
// ) USING PARQUET
// """)
//
// // 往表里插数据
// spark.sql("INSERT INTO user_log VALUES (1001, 'login', current_timestamp())")/** // 1.如果 Spark 忘了表结构,执行这句spark.sql("""CREATE TABLE user_logUSING PARQUETOPTIONS (path 'E:\\workpath\\sparkproject\\sparkLocalTask\\local_warehouse\\user_log')""")* */// 2.直接读取 parquet 文件val df = spark.read.parquet("E:\\workpath\\sparkproject\\sparkLocalTask\\local_warehouse\\user_log")// 3.创建一个临时视图(只在当前 Session 有效,重启就没了)df.createOrReplaceTempView("user_log")spark.sql("select * from user_log").show()}}