首页 > 解决方案 > Hive 元存储中的上次访问时间更新

问题描述

我在我的 Hive 控制台/.hiverc文件中使用以下属性,因此每当我查询表时,它都会更新Hive 元存储表中的LAST_ACCESS_TIME列。TBLS

set hive.exec.pre.hooks = org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec;

但是,如果我使用spark-sqlor spark-shell,它似乎不起作用并且LAST_ACCESS_TIME不会在 hive 元存储中更新。

这是我阅读表格的方式:

>>> df = spark.sql("select * from db.sometable")
>>> df.show()

hive-site.xml我已经在/etc/hive/conf和中设置了上面的钩子/etc/spark/conf

标签: apache-sparkpysparkhiveapache-spark-sql

解决方案


您的代码可能会跳过一些配置单元集成。我的回忆是,要获得更多的 Hive-ish 集成,您需要引入 HiveContext,如下所示:

from pyspark import SparkContext, SparkConf, HiveContext

if __name__ == "__main__":

  # create Spark context with Spark configuration
  conf = SparkConf().setAppName("Data Frame Join")
  sc = SparkContext(conf=conf)
  sqlContext = HiveContext(sc)
  df_07 = sqlContext.sql("SELECT * from sample_07")

https://docs.cloudera.com/runtime/7.2.7/developing-spark-applications/topics/spark-sql-example.html

希望这可以帮助


推荐阅读