빅데이터(BigData)/Spark

spark에서 master node로 데이터를 모으기 위해서 collect를 사용하는 방법

leebaro 2020. 10. 19.
728x90

spark에서 dataframe을 이용할 때 데이터는 worker node에 분산되어 저장된다.

이 때 어떠한 필요에 의해서 데이터를 master node로 보내야 하는 경우가 있다면 collect()를 이용하면 된다.

필자의 경우 df의 데이터를 oracle 데이터로 보내기 위해서 이 작업이 필요했다.

master node는 오라클 db에 접근이 가능하지만 worker node는 보안 정책으로 인해 접근할 수 없었다.

 

그래서 데이터를 master node로 보내고 master node의 데이터를 다른 db로 보내려고 했다.

 

결론적으로는 실패 해서 다른 방법을 이용했지만 어쨌든 데이터를 master node에 모으고 싶다면 이 방법을 이용하면 된다.

 

df.collect()

데이터가 많은 경우에는 데이터가 옮겨지는 시간과 리소가 많이 필요하기 때문에 이 점을 고려해서 진행해야 한다.

 

만약 특정 컬럼의 데이터만 필요하다면 아래와 같이 select() 함수를 함께 사용하면 된다.

 

df.select("col1").collect()

 

 


참고

sparkbyexamples.com/pyspark/pyspark-collect/

 

PySpark Collect() - Retrieve data from DataFrame — Spark by {Examples}

PySpark RDD/DataFrame collect() function is used to retrieve all the elements of the dataset (from all nodes) to the driver node. We should use the

sparkbyexamples.com

 

 

PySpark Collect() - Retrieve data from DataFrame — Spark by {Examples}

PySpark RDD/DataFrame collect() function is used to retrieve all the elements of the dataset (from all nodes) to the driver node. We should use the

sparkbyexamples.com

stackoverflow.com/questions/44174747/spark-dataframe-collect-vs-select

 

Spark dataframe: collect () vs select ()

Calling collect() on an RDD will return the entire dataset to the driver which can cause out of memory and we should avoid that. Will collect() behave the same way if called on a dataframe? What a...

stackoverflow.com

 

728x90