Как обновить таблицу Spark ORC Hive с помощью Scala
Я хотел бы обновить таблицу кустов в формате orc, я могу обновить из своего представления кустов ambari, но не могу запустить такой же оператор обновления из sacla (spark-shell)
objHiveContext.sql ("select * from table_name") может видеть данные, но когда я запускаю
objHiveContext.sql("update table_name set column_name='testing' ") не может быть запущен, возникает некоторое исключение Noviable (неверный синтаксис рядом с обновлением и т. д.), когда я могу выполнить обновление из представления Ambari (так как я установил все необходимые конфигурации т.е. TBLPROPERTIES "orc.compress"="NONE", транзакция true и т. д.)
Попробовал с помощью Insert в операторах использования и все, но не смог. Можем ли мы ОБНОВИТЬ таблицы ORC куста от spark? Если да, то какова процедура?
Импортировано ниже
import org.apache.spark.SparkConf
import org.apache.spark.SparkConf
import org.apache.spark._
import org.apache.spark.sql._
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.sql.hive.orc._
Примечание. Я не применил к этой таблице ни один раздел или группу. Если я применю группу, я даже не смогу просмотреть данные при сохранении в виде ORC Hive Версия:1.2.1 Версия Spark:1.4.1 Версия Scala:2.10.6
2 ответа
Вы пробовали API DataFrame.write, используя SaveMode.Append по ссылке ниже?
http://spark.apache.org/docs/latest/sql-programming-guide.html
используйте "orc" в качестве формата и "append" в качестве режима сохранения. примеры в этой ссылке выше.
Ответ на вопрос судхира:-
Как упомянуть имя базы данных при сохранении?
Вы можете предоставить имя базы данных перед именем таблицы. пример:- если имя вашей базы данных - orc_db, а имя таблицы - yahoo_orc_table, то вы можете указать имя базы данных перед именем таблицы, как показано ниже:-myData.write.format ("orc"). mode (SaveMode.Append).saveAsTable ("orc_db.yahoo_orc_table")