일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- node
- apache-spark
- Python
- word count
- RDD
- Histogram
- MAP
- web3@1.2.8
- remix
- HelloWorld
- 블록체인
- nodejs
- macbook
- pyspark
- BlockChain
- stopwords
- bigdata
- OpenCV
- Apache Spark
- python3
- jenv
- web3
- 이더리움
- solidity
- geth
- docker
- Ethereum
- Greeter
- Spark
- lambda
- Today
- Total
이것저것 프로그래밍 정리(Macbook)
apache-spark에서 map,lambda 함수 활용하기(1) - pyspark 본문
map() 함수를 이해하기 위해 map() 함수를 사용하지 않고 섭씨를 화씨로 변환하는 c2f() 파이썬 함수를 만들어 보자.
Python 함수 c2f()
위 함수를 간단히 설명하면 데이터를 하나씩 읽어서 for문으로 처리하고 list로 변환하여 반환해 주었다.
map() 함수를 이용하면 for문을 없앨 수 있다. 한번 map() 함수를 사용해보도록 하자.
map 함수 사용 c2f()
python은 map(), reduce(), filter() 함수를 이미 갖고 있다. 간단히 세 함수에 대해 알아보도록 하자.
함수 | 설명 | 예 | |
map() | 각 데이터 요소에 함수를 적용해서 'map'타입으로 반환 | map(fn,data) | |
filter() | 각 데이터 요소에서 함수의 결과 true를 선택해서 반환 | filter(fn,data) | |
reduce() | 각 데이터 요소에 함수를 적용해서 list를 반환 | reduce(fn,data) |
여기서 map()을 사용해 보도록 하자. map() 함수를 사용시 c2f()의 for문이 사라진다는 점을 유의하도록 하자.
map() 함수는 두개의 인자가 있다.
첫번째 인자는 처리하려는 함수이다. 이 경우 c2f가 되겠다. map() 함수를 사용하기 위해서 처리함수가 return값이 반드시 있어야 한다.
두번째 인자는 처리하려는 데이터 이다. 이 경우 변환하고자 하는 섭씨 온도의 리스트인 celsius가 되겠다.
lambda 함수 이용
lambda 함수를 이용하면 코드의 줄 수가 많이 줄게 된다. lambda 함수는 무명 함수이므로 함수 선언이 필요 없고, 처리 결과는 'return'을 하지 않아도 반환 된다.
lambda는 함수를 정의하는 명령어로서, 이름이 없다는 특징이 있고, 매우 직관적으로 사용할 수 있다. map-reduce에서 자주 사용되므로 잘 이해할 필요가 있다.
lambda의 간단한 예시를 살펴 보도록 하자.
lambda 함수 이용하기 전에 간단한 곱하기 2 해주는 함수 f(x)를 만들어 보았다.
위 함수를 lambda 함수로 바꿔보자.
y = lambda x:x*2 를 살펴 보도록 하자 .
입력변수로 x를 받고 출력값으로 x*2을 y에 반환해주는 형식이다.
따라서 y(1)이면 입력변수로 1이 들어가고 출력값으로 1*2 = 2 가 반환 되어 y(1) = 2 가 되는 것이다.
map 함수 + lambda 함수
map 함수와 lambda 함수를 spark에 적용 시키기 전에 c2f에 간단히 적용시켜 보도록 하자.
map(lambda c:float((9/5)*c)+32, celsisus) 를 살펴 보도록 하자.
먼저 map 부터 보면 처리하려는 데이터는 celsius이고 처리 함수는 lambda 함수이다.
lambda c:float((9/5)*c)+32 를 살펴보자. 입력 변수는 c이고 반환 값은 float((9/5)*c)+32 이다.
종합적으로 정리를 해보면 celsius의 각각 값들이 lambda 함수의 c 값으로 들어가서 화씨로 변화되어 temp에 저장되는 것이다.
spark에서 사용 할수 있게 map, lambda를 문자열에 적용시켜보자.
위의 것을 풀어서 설명해 보면 처리하려는 데이터는 sentence이고 sentence를 .split() 을 이용해서 각각 한글자씩 나누어 준 후에 map 형태를 list로 변환해 준 것이다.
이번 글에서는 RDD에서 map과 lambda를 사용하기 위해 map과 lambda를 알아보았다.
다음 글에서는 RDD에 map함수와 lambda를 적용시켜 보도록 하자.
'apache-spark(big data)' 카테고리의 다른 글
apache-spark 에서 word count하기(2) - pyspark (0) | 2020.04.28 |
---|---|
apache-spark 에서 word count하기(1) - pyspark (0) | 2020.04.27 |
apache-spark에서 map,lambda 함수 활용하기(2) - pyspark (0) | 2020.04.24 |
apache-spark의 RDD - pyspark (0) | 2020.03.12 |
apache-spark 시작하기(Macbook), spark 설치, pyspark (0) | 2020.02.18 |