Случай: у меня есть таблица HiveTest, которая представляет собой таблицу ORC и транзакцию, установленную как true, загруженную в искровую оболочку и просмотренные данные.
var rdd= objHiveContext.sql("select * from HiveTest")
rdd.show()
--- Возможность просмотра данных
Теперь я пошел в свою оболочку улья или амбари обновил таблицу, например
hive> update HiveTest set name='test' ---Done and success
hive> select * from HiveTest -- able to view updated data
Теперь, когда я могу вернуться к искре и запустить, я не могу просматривать данные, кроме имен столбцов.
scala>var rdd1= objHiveContext.sql("select * from HiveTest")
scala> rdd1.show()
--На этот раз печатаются только столбцы, данные не поступают
Проблема 2: невозможно обновить из spark sql, когда я запускаю scal>objHiveContext.sql("update HiveTest set name='test'"), получая ошибку ниже
org.apache.spark.sql.AnalysisException:
Unsupported language features in query: INSERT INTO HiveTest values(1,'sudhir','Software',1,'IT')
TOK_QUERY 0, 0,17, 0
TOK_FROM 0, -1,17, 0
TOK_VIRTUAL_TABLE 0, -1,17, 0
TOK_VIRTUAL_TABREF 0, -1,-1, 0
TOK_ANONYMOUS 0, -1,-1, 0
TOK_VALUES_TABLE 1, 6,17, 28
TOK_VALUE_ROW 1, 7,17, 28
1 1, 8,8, 28
'sudhir' 1, 10,10, 30
'Software' 1, 12,12, 39
1 1, 14,14, 50
'IT' 1, 16,16, 52
TOK_INSERT 1, 0,-1, 12
TOK_INSERT_INTO 1, 0,4, 12
TOK_TAB 1, 4,4, 12
TOK_TABNAME 1, 4,4, 12
HiveTest 1, 4,4, 12
TOK_SELECT 0, -1,-1, 0
TOK_SELEXPR 0, -1,-1, 0
TOK_ALLCOLREF 0, -1,-1, 0
scala.NotImplementedError: No parse rules for:
TOK_VIRTUAL_TABLE 0, -1,17, 0
TOK_VIRTUAL_TABREF 0, -1,-1, 0
TOK_ANONYMOUS 0, -1,-1, 0
TOK_VALUES_TABLE 1, 6,17, 28
TOK_VALUE_ROW 1, 7,17, 28
1 1, 8,8, 28
'sudhir' 1, 10,10, 30
'Software' 1, 12,12, 39
1 1, 14,14, 50
'IT' 1, 16,16, 52
org.apache.spark.sql.hive.HiveQl$.nodeToRelation(HiveQl.scala:1235)
Эта ошибка предназначена для вставки в оператор того же типа ошибки и для оператора обновления.