scala> val rdd_one = sc.parallelize(Seq(1,2,3))

rdd_one: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:24


scala> rdd_one.getNumPartitions

res0: Int = 12


scala>


scala> sc.defaultParallelism

res1: Int = 12






기본 파티션 개수는 cpu 개수를 기반으로 만들어지거나 (장비별로 다른 값이 나옴, defaultParallelism으로 확인할 수 있다.) 스파크 설정 매개 변수 spark.default.parallelism 또는 클러스터의 코어 개수 중 하나이다


그외에 큰 자원을 읽을 때 기본 파티션 개수가 변경될 수 있다.


 

파티션 개수는 RDD 트랜스포메이션을 실행할 태스크 수에 직접적인 영향을 주기 때문에 파티션 개수가 중요하다. 


파티션 개수가 너무 적으면 많은 데이터에서 아주 일부의 CPU/코어만 사용하기 때문에 성능이 저하되고 클러스터를 제대로 활용하지 못하게 된다. 


반면에 파티션 개수가 너무 많으면 실제로 필요한 것보다 많은 자원을 사용하기 때문에 멀티 테넌트 환경에서는 자원 부족 현상이 발생할 수 있다.

Posted by '김용환'
,


파이썬에서 selenium과 phantomjs를 연동한 간단 예시이다.


>>> from selenium import webdriver

>>> driver = webdriver.Firefox() 



이전 커맨드를 실행하면 빈 브라우저 창이 열린다. 에러가 발생하면 geckodriver(https://github.com/mozilla/geckodriver/releases)를 설치하고 geckodriver를 사용할 수 있도록  PATH 변수에 추가해야 한다.



geckodriver 파일을 압축을 푼 후 바이너르를 PATH에 추가한 후, executable(예, chmod 755)로 변경한다.





 

 

 >>> driver.get('https://www.google.com')

 

driver를 사용해 엘리먼트를 파싱하거나, 파이어폭스가 커맨드를 따라 변경되는 것을 볼 수 있다. 


 

 


phantomjs와 같은 헤드리스 브라우져와 연동할 수 있다.

 

http://phantomjs.org/download.html




>>> from selenium import webdriver

>>> driver = webdriver.PhantomJS()  



패스에 넣거나 다음처럼 phantomjs 경로를 사용할 수 있다.



>>> driver = webdriver.PhantomJS('utils/phantomsjs')  

>>> driver.get('http://python.org')

>>> driver.save_screenshot('python_website.png')

True



이렇게 파일을 확인할 수 있다.


스크린 샷 파일이 긴 윈도우이다. maximize_window를 사용하거나 set_window_size로 윈도우 크기를 설정해 윈도우 크기를 변경할 수 있다.



https://selenium-python.readthedocs.io/api.html

Posted by '김용환'
,