一、从RBDMS(关系型数据库)创建Dataframe
1、spark安装目录没有提供与数据库连接相关的Jar包,因此,对于想访问的数据库,需要把相关的Jar包拷贝到SPARK_HOME的Jars文件夹,在此贴上我的配置
spark:3.1.2
oracle:Personal Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
jar:ojdbc6.jar
2、使用spark的read API读取数据库,通过参数指定数据库驱动、数据库地址、用户名、密码等关键信息
eg:以Oracle数据库为例
spark.read.format(“jdbc”)
.option(“driver”, “oracle.jdbc.driver.OracleDriver”)
.option(“url”, “jdbc:oracle:thin:@localhost:1521:orcl”)
.option(“user”, “用户名”)
.option(“password”,“密码”)
.option(“numPartitions”, 20)
.option(“dbtable”, "数据表名 ")
.load()
import org.apache.spark.sql.Dataframe
val dfOralce:Dataframe = spark.read.format("jdbc").option("driver", "oracle.jdbc.driver.OracleDriver").option("url", "jdbc:oracle:thin:@10.10.189.180:1521:orcl").option("user", "scott").option("password","scott").option("numPartitions", 20).option("dbtable", "EMP").load()
dfOracle.show
然后展示如下图所示
3、对oracle数据库进行简单操作
1)使用Spark Sql算子
val filterdfOracle:Dataframe = dfOracle.filter("SAL" >= "10000").select("ENAME","JOB")
filterdfOracle.show
结果如下图所示
2)使用sql语句
dfOracle.createTempView("t")
val query:String = "select t.ename,t.job from t where t.sal >= 1000"
val result:Dataframe = spark.sql(query)
result.show
展示的结果和第一种通过spark sql算子的一样



