Versions Compared

Key

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

...

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

dfHotels = sqlContext.createDataFrame(rddHotels, schema)

데이터셋으로 변경하면 , 집계처리에서 RDB에 사용하는 SQL문및 관계형 DB에 집합을 정복하는

JOIN문 활용도 가능합니다.  여기서 NOSQL의 의미를 알아야 합니다. Not Only SQL로 SQL문만을

사용하지 않겠다란 의미며 사실은 SQL문은 집계처리에 있어서 중요한 위치를 차지하며

RDB가 하듯이 데이터 엔티티정의를 통해 관계형 DB처럼 집계처리를 할수가 있습니다.  


Expand
title실행샘플

|


데이터 셋을 통해 SQL문사용하기

No Format
dfHotels.createOrReplaceTempView('tblHotel')


spark.sql('select * from tblHotel').collect()

RDB에서 사용하는 SQL문을 모두 모두 지원하지 않을테지만, 

대용량 데이터속에서 sql문을 통해 추출을 진행할수가 있습니다.


SparkData의 시각화 

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

Panel
pdHotels = pd.read_json( json.dumps(rddHotels.collect()) )

pdHotels
addrSummaryavailableRoomscategorydiscountgradehotelIdxlatitudelongitudenameregionNamereviewCount
07hotel169900special123430.130.1메이필드호텔서울223


여기서 의미 있는 값이 무엇인지? 필드명을 파악합니다.


필요하면 엑셀로도 저장해줍니다.

pdHotels.to_excel('output.xls', index=False)

즉시 데이터의 결과를 확인하고, 몇가지 파이썬툴을 통해 정적 웹페이지로 만들어

랭킹처리에대한 결과를 사용자에게 제공해줄수도 있습니다.


Spark RDD 기본 API

필터-비싼호텔 찾기

...

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


반경검색을 더 빠르게 작동 시키기 : pyspark 반경검색


비슷한 이름 호텔찾기

No Format
siHotel = rddHotels.filter( lambda row : 3 > edit_distance('메아 펠드',row['name'] ) )
siHotel.take(100)

...