我们要使用spark对接hive,首先要把hive-site.xml拷贝到$SPARK_HOME/conf下,接下来我们测试一下
使用spark-shell测试:
./bin/spark-shell --master local[2] --jars ~/software/mysql-connector-java-5.1.27-bin.jar
–master指定运行模式
-jars 由于我们要连接mysql(hive元数据信息存在mysql里)所以要引入mysql-connector-java
测试:
这样就算对接上了
我们再测试一下使用spark-sql进行对接
./bin/spark-sql local[2] --jars ~/software/mysql-connector-java-5.1.27-bin.jar --driver-class-path ~/software/mysql-connector-java-5.1.27-bin.jar
注意,使用spark-sql连接时,还得使用driver-class-path指定driver端的依赖
测试:
1.Spark连接Hive
需求:读取mysql中spark.a表的数据并写入到hive
def main(args: Array[String]): Unit = {
//创建SparkSession
val spark: SparkSession = SparkSession.builder().master("local").appName("HiveSourceApp")
//一定要开启,不然无法访问Hive
.enableHiveSupport()
.getOrCreate()
//隐式转换
import spark.implicits._
//定义一个Properties,放置用户名密码以访问mysql
val connectionProperties = new Properties()
connectionProperties.put("user", "root")
connectionProperties.put("password", "root")
//访问mysql的url
val url = "jdbc:mysql://192.168.0.133"
//读取表
val df: DataFrame = spark.read.jdbc(url, "spark.a", connectionProperties)
//写入表
df.write.mode("append").saveAsTable("sparka")
spark.stop()
}
运行完成,我们到hive里看一下
运行完成