我在我的 Hive 控制台/.hiverc
中使用以下属性文件,这样每当我查询表时,它都会更新 LAST_ACCESS_TIME
TBLS
中的列Hive 元存储表。
set hive.exec.pre.hooks = org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec;
但是,如果我使用 spark-sql
或 spark-shell
,它似乎不起作用,LAST_ACCESS_TIME
不会在配置单元元存储中更新。这是我阅读表格的方式:
>>> df = spark.sql("select * from db.sometable")
>>> df.show()
我已经在 hive-site.xml
中设置了上面的钩子(Hook)在这两个 /etc/hive/conf
和 /etc/spark/conf
.
最佳答案
您的代码可能会跳过一些配置单元集成。我的记忆是,要获得更多的 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希望这可以帮助
关于apache-spark - Hive 元存储中的上次访问时间更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60385579/