Можно ли вставить во временную таблицу в спарк? - PullRequest
1 голос
/ 30 марта 2020

Я тестировал следующие запросы, используя блоки данных с Apache Spark 2.4:

%sql

<step1>
create temporary view temp_view_t
as select 1 as no, 'aaa' as str;

<step2>
insert into temp_view_t values (2,'bbb');

И затем я получил это сообщение об ошибке.

Ошибка в SQL операторе: AnalysisException : Вставка в таблицу на основе RDD недопустима. ;; 'InsertIntoTable Project [1 AS № 824, aaa AS str # 825], false, false + - LocalRelation [col1 # 831, col2 # 832]

Мои вопросы

  1. Невозможно вставить во временную таблицу в spark?
  2. Как я могу работать для создания временных данных в spark sql?

Спасибо вы.

1 Ответ

0 голосов
/ 30 марта 2020

Мы can't вставляем данные во временную таблицу, но мы можем имитировать c вставку с помощью union all (или) union (для удаления дубликатов).

Example:

#create temp view
spark.sql("""create or replace temporary view temp_view_t as select 1 as no, 'aaa' as str""")

spark.sql("select * from temp_view_t").show()
#+---+---+
#| no|str|
#+---+---+
#|  1|aaa|
#+---+---+

#union all with the new data
spark.sql("""create or replace temporary view temp_view_t as select * from temp_view_t union all select 2 as no, 'bbb' as str""")

spark.sql("select * from temp_view_t").show()                                                                     
#+---+---+
#| no|str|
#+---+---+
#|  1|aaa|
#|  2|bbb|
#+---+---+

#to eliminate duplicates we can use union also. 
spark.sql("""create or replace temporary view temp_view_t as select * from temp_view_t union select 1 as no, 'aaa' as str""")

spark.sql("select * from temp_view_t").show()
#+---+---+
#| no|str|
#+---+---+
#|  1|aaa|
#|  2|bbb|
#+---+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...