Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

No Format
import pyspark
import requests
import pandas as pd
import json
from pyspark.sql import SparkSession
from pyspark.sql.types import *
from pyspark.sql import SQLContext

sc = pyspark.SparkContext('local[*]')
spark = SparkSession(sc)
sqlContext = SQLContext(sc)

spark 객체는 분산컴퓨팅을위해 여러개를 선택할수도 있으나, 여기서는 로컬 객체 하나만 사용하겠습니다.

...

전체 리스트를 Spark 병렬처리용 RDD로  변환

No Format
hotellist_scrddHotels = sc.parallelize(hotels)

이렇게 변환하는 이유는,  대용량 데이터의 복잡한 분산 연산처리를

...

Spark RDD를 전체 리스트로 반환

No Format
hotellist_scrddHotels.collect()


SparkRDD 를 데이터셋으로

No Format
schema = StructType( [
    StructField('hotelIdx',LongType(),True),
    StructField('discount',LongType(),True),
    StructField('name',StringType(),True)
])

dfHotels = sqlContext.createDataFrame(rddHotels, schema)



SparkData의 시각화 

Spark에서 처리된 데이터를 시각화하거나? 엑셀에 저장할때 이용합니다.

...

필터-비싼호텔 찾기

No Format
expesiveHotel = hotellist_scrddHotels.filter( lambda row : row['discount'] > 300000 )
#전체를 다 가져오거나?
expesiveHotel.collect()
#특정 개수만 획득
expesiveHotel.take(5)


==> 데이터 예
[{'addrSummary': '강남 | 삼성역 도보 1분',
  'availableRooms': 5,
  'displayText': '서울 > 파크 하얏트 서울',
  'distance': 0.0,
  'districtName': '강남구',

...

중복제거-호텔 관리데이터 확인

No Format
grades = hotellist_scrddHotels.map( lambda row: row['grade'] ).distinct()
grades.take(5)

==> 결과 : 해당 데이터가 관리하는 grade파악이 가능합니다.
['special1', 'special2', 'grade2', 'motel', 'design']


regions = hotellist_scrddHotels.map( lambda row: row['districtName'] ).distinct()
regions.take(5)
==> 결과
['중구', '강남구', '서초구', '강서구', '구로구']

...

No Format
#서울의 어느 호텔 'latitude': 37.5700718, 'longitude': 127.0089115
nearHotel= hotellist_scrddHotels.filter( lambda row : 5 > getDistance(37.5700718,127.0089115,row['latitude'],row['longitude'] ) )
nearHotel.take(10)
nearHotel.count()

...

비슷한 이름 호텔찾기

No Format
siHotel = hotellist_scrddHotels.filter( lambda row : 2 > edit_distance('호텔 리안 A',row['name'] ) )
siHotel.take(100)

...