簡體   English   中英

Spark2中的SQLContext無法獲取更新的配置單元表記錄

[英]SQLContext in Spark2 not getting updated hive table records

我有一個正在運行的應用程序,該應用程序使用HiveContext查詢蜂巢表,如果我在spark1.6中使用spark-submit運行該應用程序,則可以正常運行。 作為升級的一部分,我們切換到spark2.1並使用spark2-submit。 由於spark2不支持HiveContext,而是改為對SQLContext進行初始化。 我面臨的問題是,一旦我啟動上下文,在hive查詢結果中就看不到hive表中的任何增量更改。 我正在使用enableHiveSupport()啟動SparkContext。 如果我停止並重新啟動該應用程序,則可以看到這些行。 寫入數據后,寫入數據的應用程序正在執行MSCK修復表,因此我不確定自己丟失了什么。

這是代碼片段

val spark= SparkSession.builder().enableHiveSupport().getOrCreate()
val sqlc=spark.sqlContext
sqlc.sql("select * from table1").show(false)

+---+----------+----+
| id|   hire_dt|user|
+---+----------+----+
|1.0|2018-01-01|John|
|2.0|2018-12-01|Adam|
+---+----------+----+

現在,在另一個會話中,我添加了新行,但是如果運行上面的代碼,它仍然僅返回2行。

如果我做一個刷新表,即可以正常工作

val spark= SparkSession.builder().enableHiveSupport().getOrCreate()
val sqlc=spark.sqlContext
sqlc.sql("refresh table table1")
sqlc.sql("select * from table1").show(false)

我的問題是為什么我應該做一個refeshTable,因為當我使用HiveContext和SQLContext進行查詢時,我從來沒有在spark1.6中做過它應該與HiveContext行為相同

嘗試sqlContext.refreshTable("my_table")

在spark 2.x spark.catalog.refreshTable("my_table")

以SQL格式spark.sql("refresh table my_table")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM