Spark SQL还支持读取和写入存储在Apache Hive中的数据。但是,由于Hive具有大量依赖项,因此这些依赖项不包含在默认的Spark分发中。如果可以在类路径上找到Hive依赖项,Spark将自动加载它们。请
注意,这些Hive依赖项也必须存在于所有工作节点上,因为它们需要访问Hive序列化和反序列化库(SerDes)才能访问存储在Hive中的数据。
通过在conf/中放置hive-site.xml,core-site.xml(用于安全性配置)和hdfs-site.xml(用于HDFS配置)文件来完成Hive的配置。
使用Hive时,必须使用Hive支持实例化SparkSession,包括连接到持久性Hive Metastore,支持Hive serdes和Hive用户定义函数。没有现有Hive部署的用户仍可以启用Hive支持。当未由hive-site.xml配置时,上下文会自动在当前目录中创建metastore_db,
并创建一个由spark.sql.warehouse.dir配置的目录,该目录默认为Spark应用程序当前目录中的目录spark-warehouse开始了。请注意,自Spark2.0.0起,不推荐使用hive-site.xml中的hive.metastore.warehouse.dir属性。
而是使用spark.sql.warehouse.dir指定仓库中数据库的默认位置。您可能需要向启动Spark应用程序的用户授予写入权限。
import java.io.File
import org.apache.spark.sql.{Row, SaveMode, Spark