Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark Thrift服务器强制元数据刷新_Apache Spark_Apache Spark Sql_Thrift - Fatal编程技术网

Apache spark Spark Thrift服务器强制元数据刷新

Apache spark Spark Thrift服务器强制元数据刷新,apache-spark,apache-spark-sql,thrift,Apache Spark,Apache Spark Sql,Thrift,我正在使用spark在hive metastore中创建一个表,然后将MSSQL连接到spark Thrift服务器以查询该表。 该表是通过以下方式创建的: df.write.mode("overwrite").saveAsTable("TableName") 问题是,每次当我连接MSSQL时覆盖表(这是一项日常工作)后,我都会收到一个错误。如果我重新启动Thrift服务器,它可以正常工作,但我想自动执行此操作,每次重新启动服务器似乎都有点极端 最可能的罪魁祸首是在表覆盖后不再有效的旧缓存元数

我正在使用spark在hive metastore中创建一个表,然后将MSSQL连接到spark Thrift服务器以查询该表。 该表是通过以下方式创建的:

df.write.mode("overwrite").saveAsTable("TableName")
问题是,每次当我连接MSSQL时覆盖表(这是一项日常工作)后,我都会收到一个错误。如果我重新启动Thrift服务器,它可以正常工作,但我想自动执行此操作,每次重新启动服务器似乎都有点极端

最可能的罪魁祸首是在表覆盖后不再有效的旧缓存元数据在覆盖表之后,在任何客户端访问之前,如何强制Thrift刷新元数据?

我可以满足于MSSQL的解决方案,但表中还有其他“客户机”,而不仅仅是MSSQL。如果我可以在完成覆盖后从spark(或linux终端)强制刷新元数据,而不是让每个客户机在请求数据之前运行刷新命令,我更愿意这样做

注:

spark.catalog.refreshTable("TableName")
不适用于所有客户,仅适用于Spark

SQL REFRESH TABLE `TableName`;

适用于Qlick,但同样,如果我要求每个客户端刷新,可能意味着Thrift需要额外的工作,并且可能会发生错误(例如开发人员忘记添加刷新)。

Thrift metastore db是什么?试着看看你在外部/本地数据库(用于metastore)方面是否也面临同样的问题。恐怕你的评论让我有点不知所措。我正在使用Cloudera群集。数据库是“默认”的,不确定如何更改Spark保存表的数据库。安装组件时,您可能会获得一些数据库。在cloudera manager中,您可能会得到一些关于旧版配置下的元存储数据库的线索。