1.使用spark连接hive时,数据目录总是spark的目录,而不是hive的元数据目录
官网说的是需要把hive-site.xml还有hadoop和hdfs的核心配置拿到spark的conf下,经过测试,其实只需要把hive-site复制过去就可以。但是spark的conf下已经有了一个hive-site,经过比对,这两个hive-site的内容是不一样的,所以如果在这个时候运行sparksql的话,加载的是spark的warehouse。这个可以理解成spark的内置hive,必须要把这个内置的hive文件替换掉,才能使用sparksql连接hive,并且有几个细节的配置需要改一下
metastore.catalog.default=hive
hive中 hive.strict.managed.tables=false
hive.load.data.owner=spark(具体执行用户)
spark.sql.warehouse.dir= /warehouse/tablespace/managed/hive(hive元数据目录)
然后进去sparkbin下,启动spark-shell脚本:
在sql里面写执行的sql就可以执行相关对hive的操作了
scala> sql("select * from test3_hive").show
+---+----+
| id|name|
+---+----+
| 1| aaa|
+---+----+
2.同一条建表语句,使用hive客户端创建,hdfs上的文件目录是这样的:表名/文件夹分区名/数据
使用spark客户端创建表,hdfs文件目录是这样:表名/数据
问题是,用spark读取hive创建的表报错Not a file,且spar