使用场景
适用于当使用spark sql操作hive数据库中的数据的时候,用该参数指定数据存放的位置
详解
使用hive需要sparksession设置支持选项,如果用户集群里,没有部署好的hive,sparksession也能够提供hive支持,在这种情况下,如果没有hive-site.xml文件,sparkcontext会自动在当前目录(即代码结构目录中),创建元数据db,并且会在spark.sql.warehouse.dir表示的位置创建一个目录,用户存放table数据,所以spark.sql.warehouse.dir是一个用户存放hive table文件的一个目录,因为是一个目录地址,难免会收到操作系统的影响,因为不同的文件系统的前缀是不一样了,为了适配性,spark鼓励在code中设置该选项,而不是在hive-site.xml中设置该选项。
当使用本地操纵调试hive代码的时候
该种方式一定会没有部署好hive啊,所以,sparkcontext会自动在当前目录(即代码结构目录中),创建元数据db,并且会在spark.sql.warehouse.dir表示的位置创建一个目录,用户存放table数据,
当在集群操纵hive代码的时候
如果没有部署好的hive,spark确实是会使用内置的hive,但是spark会将所有的元信息都放到spark_home/bin 目录下。此时就算配置了spark.sql.warehouse.dir也不会起作用。
该种情况下,只有在部署好的hive情况下,使用spark.sql.warehouse.dir才会生效。而且spark会默认覆盖hive的配置项
总结:
spark.sql.warehouse.dir指定的就是数据的存放位置