韩雪冬网站设计,柳市网站建设,物流网站建设重要性,汕头seo代理使用spark操作hive#xff0c;使用metastore连接hive#xff0c;获取hive的数据库时#xff0c;当我们在spark中创建数据库的时候#xff0c;创建成功。 同时hive中也可以看到这个数据库#xff0c;建表插入数据也没有问题#xff0c;但是当我们去查询数据库中的数据时使用metastore连接hive获取hive的数据库时当我们在spark中创建数据库的时候创建成功。 同时hive中也可以看到这个数据库建表插入数据也没有问题但是当我们去查询数据库中的数据时发现查不到数据去查hive的元数据发现spark在创建数据库的时候将数据库创建在了本地文件系统中 而我们的hive数据是存放在hdfs上的我们的spark进行查询数据时是使用hive的metastore连接的hive的数据库也就是spark会从hdfs上读取数据所以无论怎么查询都是查不出来数据的 当我们按照这个路径去我们本地文件系统中查找这个路径的时候就可以看到
这个数据库如果没有可能是spark创建在了其他的服务器节点上 。
如何解决这个问题呢 只需要在spark的配置文件中指定spark的数据存储位置为hdfs上即可 在spark的conf目录下找到spark-defaults.conf文件在文件中添加 spark.sql.warehouse.dir hdfs的路径(hive的路径)
还有另一种方法(慎用) 在创建数据库的时候在后面加上localtion hdfs路径/数据库名.db 该方法虽然也可以将spark创建的数据库放入到hdfs上但是在创建的时候它会清空该文件夹下的所有数据所以若使用此方法创建需要设置为一个空文件夹