우리의 ETL Hive 스크립트 중 하나를 Spark로 전환하려고합니다. Hive ETL 스크립트는 새 동기화 전에 매일 밤 데이터 일부를 삭제해야하는 테이블을 유지 관리합니다. Hive ETL은 주 테이블을 사용하여 삽입 덮어 쓰기를 사용하여 3 일 이상 데이터를 삭제합니다. 기본적으로 3 일 이상 경과하지 않은 데이터로 임시 테이블을 만든 다음 주 테이블을 덮어 씁니다.어떻게 스파크를 사용하여 삽입 덮어 쓰기를 수행 할 수 있습니까?
Spark (스칼라 사용)에서는 동일한 소스에 쓸 수없는 오류가 계속 발생합니다. 여기에 내 코드가있다 :
spark.sql ("Select * from mytbl_hive where dt > date_sub(current_date, 3)").registerTempTable("tmp_mytbl")
val mytbl = sqlContext.table("tmp_mytbl")
mytbl.write.mode("overwrite").saveTableAs("tmp_mytbl")
//writing back to Hive ...
mytbl.write.mode("overwrite").insertInto("mytbl_hive")
내가 읽고있는 테이블에 쓸 수 없다는 오류가 발생한다.
누구든지이 작업을 수행하는 더 좋은 방법을 알고 있습니까?