scala windows本地spark读取mysql8.0表插入远程hive3.0表 spark ETL mysql to hive
package main.scala.work
import org.apache.spark.sql.{SaveMode, SparkSession}
object MysqlToHive {
def main(args: Array[String]): Unit = {
// 1. 创建SparkSession并启用Hive支持
val spark = SparkSession.builder()
.appName("Spark3.4.1 Hive Reader")
.master("local[*]")
.config("hive.metastore.uris", "thrift://master:9083") // 在 window的hosts配置IP映射:you_ip master
.config("spark.sql.warehouse.dir", "hdfs://master:9000/opt/hiveDataFile") //配置远程hdfs数据文件存储路径
.enableHiveSupport()
.getOrCreate()
// val df = spark.sql("select * from test_db.room2")
// df.printSchema()
// df.show()
// 2. 配置MySQL连接参数
val jdbcUrl = "jdbc:mysql://localhost:3306/hivedata?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8"
val mysqlProps = new java.util.Properties()
mysqlProps.setProperty("user", "root")
mysqlProps.setProperty("password", "123456")
mysqlProps.setProperty("driver", "com.mysql.jdbc.Driver")
// 3. 从MySQL读取数据
val mysqlDF = spark.read.jdbc(jdbcUrl, "room2", mysqlProps)
// 4. 写入Hive表
// mysqlDF.write
// .mode(SaveMode.Overwrite) // 覆盖模式:append/ignore/overwrite
// .saveAsTable("test_db.room2")
//5. 创建临时视图使用sql插入
mysqlDF.createTempView("temp_table") // 创建临时视图
spark.sql("INSERT OVERWRITE TABLE test_db.room2 SELECT * FROM temp_table") //以覆盖的模式插入
spark.stop()
}
}
自动化学习。

浙公网安备 33010602011771号