1

spark 응용 프로그램에 대해 postgres db에서 특정 레코드를로드/삭제해야한다는 요구 사항이 있습니다. 로드를 들어, 내가 사용 dataframesspark sql 데이터 프레임으로 기능 삭제

질문은
delete from employee where emp_id > 1000 

대신 직접 SQL을 작성하고, 데이터를 삭제하려면 아래의 형식

sqlContext.read.format("jdbc").options(Map("url" -> "postgres url", 
     "user" -> "user" , 
     "password" -> "xxxxxx" , 
     "table" -> "(select * from employee where emp_id > 1000) as filtered_emp")).load() 

에서 스파크 dataframe를 사용하고, 스파크 방법이있다 데이터베이스에있는 레코드를 삭제하는 것과 비슷한 것? 아니면 유일한 방법은 직접 SQL을 사용하는 것입니다?

sqlContext.read.format("jdbc").options(Map("url" -> "postgres url", 
     "user" -> "user" , 
     "password" -> "xxxxxx" , 
     "table" -> "(delete from employee where emp_id > 1000) as filtered_emp")).load() 
+1

표준 JDBC 클라이언트 만 사용 하시겠습니까? – zero323

답변

1

실제 데이터 원본 (즉, 포스트그레스의 테이블)을 수정 (기록 삭제)하려면 Spark이 좋은 방법이 아닙니다. 동일한 목적을 달성하기 위해 jdbc 클라이언트를 직접 사용할 수 있습니다.

어쨌든 (데이터 프레임의 일부로 계산중인 단서를 바탕으로 분산 된 방식으로)이 작업을 수행하려는 경우; 레코드를 삭제하기위한 로직/트리거 정보를 가진 데이터 프레임과 일치하여 작성된 동일한 jdbc 클라이언트 코드를 가질 수 있으며 여러 작업자가 병렬로 실행할 수 있습니다.