Прочитайте из таблицы улья и запишите обратно, используя spark sql

Я читаю таблицу Hive, используя Spark SQL, и назначаю ее для scala val

val x = sqlContext.sql("select * from some_table")

Затем я выполняю некоторую обработку с фреймом данных x и, наконец, придумываю фрейм данных y, который имеет точную схему в виде таблицы some_table.

Наконец, я пытаюсь вставить перезаписывающий фрейм данных y в ту же таблицу кустов some_table

y.write.mode(SaveMode.Overwrite).saveAsTable().insertInto("some_table")

Тогда я получаю ошибку

org.apache.spark.sql.AnalysisException: невозможно вставить перезапись в таблицу, которая также читается из

Я попытался создать SQL-оператор вставки и запустить его с помощью sqlContext.sql (), но он также дал мне ту же ошибку.

Есть ли способ, которым я могу обойти эту ошибку? Мне нужно вставить записи обратно в ту же таблицу.

Привет, я попытался сделать как предложено, но все равно получаю ту же ошибку.

val x = sqlContext.sql("select * from incremental.test2")
val y = x.limit(5)
y.registerTempTable("temp_table")
val dy = sqlContext.table("temp_table")
dy.write.mode("overwrite").insertInto("incremental.test2")

scala> dy.write.mode("overwrite").insertInto("incremental.test2")
             org.apache.spark.sql.AnalysisException: Cannot insert overwrite into table that is also being read from.;

Ответы на вопрос(1)

Ваш ответ на вопрос