안녕하세요 Dibrary입니다.
Spark를 설치 완료 하셨다면, 이후 데이터 파일을 불러와서 간단한 확인을 해 보겠습니다.
먼저 cmd로 spark-shell을 실행 해 줍니다.
간단하게 임의의 데이터를 만들었습니다.
굳이 순서대로 하지 않아도 되는데, 갯수를 알기 쉽게 이렇게 작성했습니다.
11은 4개, 17은 8개, 15는 6개, 13은 2개, 2는 10개죠.
파일 읽어오기 = sc.textFile
textFile을 사용하면 파일을 읽어올 수 있습니다. 저는 경로가 다른 곳에 넣어두었기 때문에, 절대경로를 입력했습니다.
파일을 읽어서 values라는 객체에 담았고, 해당 객체는 RDD[String] 임을 알 수 있습니다.
RDD는 Spark에서 다루는 기본 추상화 객체입니다.
특징으로는
- 불변성 - 읽기 전용
- 복원성 - 장애 내성
- 분산 - 여러 곳에 저장
의 특징을 가지고 있습니다.
내부 데이터는 String으로 RDD가 구성되어 있다는 의미죠.
과연 읽어온 데이터가 맞는지 확인 해 볼까요?
count를 사용하면 줄의 갯수를 확인할 수 있습니다.
아까 메모장에 작성한 내용이 5줄이었으니 맞게 나옵니다.
String 객체 확인하기 = foreach
foreach를 사용하면 읽어온 객체를 확인할 수 있습니다.
네 메모장의 내용과 똑같죠?
그럼 좀 더 특별하게 정해진 값을 찾아보는 명령어를 보겠습니다.
각 요소를 전달해 필터링 할 수 있는 함수 = filter
filter 함수를 사용해서 2가 포함된 경우만 가져왔습니다.
주의할 점은, 제가 데이터를 2,2,2,2, 이렇게 작성 해 두었기 때문에 필터로 찾아온 데이터의 줄 수는 1개 입니다.
혼동하시면 안됩니다.
새로운 RDD 생성하기 = map 함수
temp라는 변수에서 콤마를 기준으로 잘라서 새로운 RDD를 만들었습니다. 이 새RDD의 이름은 single_values
이 객체는 count를 해도 한 줄이라고 나옵니다. 과연 filter를 한 결과와 똑같을까요?
배열 확인하기 = collect 함수
collect를 써보니 Array라고 나옵니다. filter와는 결과가 다르네요.
또 map으로 나온 객체를 foreach로 확인해보려 하면? 아래와 같이 알 수 없는 글자가 나옵니다.
이는 데이터가 배열 안에 위치해 있기 때문입니다.
그러면 데이터를 collect 말고 foreach를 써서 볼 수는 없는걸까요?
아닙니다. 데이터를 '변형'해서 다루면 됩니다.
collect에서 head 데이터만 꺼내어서 temp라는 변수에 담았습니다.
이 데이터는 Array안에 Array가 들어있는게 아닌 것을 확인하실 수 있습니다.
따라서 foreach를 사용하니 값들이 낱개로 출력이 잘 되는 것을 확인하실 수 있습니다.
'프로그래밍 > Data process' 카테고리의 다른 글
RabbitMQ를 사용해서 데이터를 넣고, 꺼내와 보자 (0) | 2022.07.20 |
---|---|
[공공데이터포털] 사용해보기 (0) | 2022.07.13 |
[Spark] Windows 에 Apache Spark 설치하기 (0) | 2022.05.06 |
파이썬으로 Redis 데이터 베이스 값 읽고 쓰기 (0) | 2022.04.04 |
Redis 설치 (Windows에 설치하기) (0) | 2022.04.01 |