Maven依赖配置文件准备
直接看这个帖子
SparkSql 用Scala代码查询Hive里面的指定的表
users.json
[{"name":"zhangsan" ,"age":18} ,{"name":"lisi" ,"age":15}]
代码
有两种方式, demo01 是原始的SQL
demo02是DataFrame的方式,DataFrame更强大,
而直接写SQL更灵活,学习成本低.其实两种都能满足业务开发.
import org.apache.spark.sql.SparkSessionobject HiveWrite {/*** 创建方式1*/def demo01(spark: SparkSession): Unit = {// 先创建换一个数据库spark.sql("show databases").showspark.sql("create database ceshi").show // 如果数据库存在会抛异常spark.sql("use ceshi").showspark.sql("create table user1(id int, name string)").show //如果表存在会抛异常spark.sql("insert into user1 values(10, 'lisi')").show}/*** 创建方式2** @param spark*/def demo02(spark: SparkSession): Unit = {spark.sql("show databases").showspark.sql("create database ceshi2").show // 如果数据库存在会抛异常//读取json里面的数据,转成DataFrameval df = spark.read.json("E:\\ZJJ_SparkSQL\\demo01\\src\\main\\resources\\users.json")spark.sql("use ceshi2")// // 直接把数据写入到hive中. 表可以存着也可以不存在df.write.mode("append").saveAsTable("user2")df.write.insertInto("user2") // 基本等于 mode("append").saveAsTable("user2")}def main(args: Array[String]): Unit = {// 设置登录人,不然会出现没有权限问题System.setProperty("HADOOP_USER_NAME", "root")val spark: SparkSession = SparkSession.builder().master("local[*]").appName("HiveWrite").enableHiveSupport()// 指定Hive的数据仓库的位置,这个路径是hdfs上面的路径.config("spark.sql.warehouse.dir", "hdfs://zjj101:9000/user/hive/warehouse").getOrCreate()// demo01(spark) // 创建数据库和表插入数据方式1demo02(spark) // 创建数据库和表插入数据方式1spark.close()}}
