목록 bigdata/spark (9)
KEEP GOING
개요 sklearn의 tfidfVectorizer를 통해 tfidf matrix를 생성하고 행렬 간 코사인 유사도를 구해 문서 간 유사도를 산출할 수 있습니다. 하지만 문제가 되는 점은 문서가 대용량 dataset일 경우입니다. 단일 서버로는 감당하기 힘들 정도로 매우 느린 속도로 지연이 발생합니다. 이때 브로드캐스트와 parallelize라는 spark의 분산 처리 기능을 활용하여 대규모 dataset에 대한 처리 속도를 개선할 수 있습니다. tfidftfidf는 단어 빈도 tf(term frequency)를 역문서빈도 idf(inverse document frequency)로 곱한 값입니다.tfidf는 문장 내에서 중요한 단어에 높은 가중치를 주기 위한 방법입니다. 우리가 적는 말들은 컴퓨터가 이해할..
예를 들어 다음과 같이 spark dataframe이 있다고 가정합니다. df = spark.createDataFrame([(1,), (1,), (4,), (4,), (4,), (5,), (6,), (8,), (3,)], ('col1',)) df.show() find duplicate values in spark dataframe 한 컬럼 안에서 중복인 값을 확인하고 싶을 때 df.groupBy('col1').count().where('count > 1').show() 만약 count 값은 확인하고 싶지 않다면 drop('count')를 추가합니다. df.groupBy('col1').count().where('count > 1').drop('count').show()
목차 from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() columns = ['id', 'phone_number', 'name', 'sex'] df = spark.createDataFrame([['1', "010-3333-4234", 'Jisu', 'female'], ['2', '010-9999-3231', 'Karina', 'female'], ['3', '010-6653-5888', 'Winter', 'female'], ['4', '010-7732-0029', 'Eunwoo', 'male']], columns) df.show() 우선 실습을 진행하기 앞서 샘플 spark dataframe을 생성합니다. 1. fi..
목차 Spark Configuration(스파크 설정)spark application의 동작 방식을 제어하기 위해서는 다양한 설정이 필요합니다. 이러한 설정은 spark-default.conf 파일, spark-shell 또는 spark-submit 옵션, SparkConf을 통해 수정할 수 있습니다. 만약 여러 property를 동시에 적용한 경우, 적용 우선 순위는 SparkConf, spark-shell, spark-submit, spark-default.conf 순입니다. 1. SparkConf 인스턴스 사용from pyspark.sql import SparkSession from pyspark.conf import SparkConf conf = SparkConf().setMaster("local..
목차 ClassNotFoundException 오류 원인 SparkSession으로 spark 객체를 생성하고, spark.read.jdbc()로 tibero db에 연결하여 테이블을 spark df로 읽어오는 과정이었습니다. 이 과정에서 ClassNotFoundException: com.tmax.tibero.jdbc.tbdriver 라는 오류가 발생했습니다. from pyspark.sql import SparkSession spark = SparkSession.builder.appName('jdbc connect test')\ .getOrCreate() df = spark.read.format("jdbc")\ .option("driver", "com.tmax.tibero.jdbc.TbDriver")\ ..
1. 커맨드 라인(CLI)에서 버전 확인 spark-submit --version spark-shell --version spark-sql --version spark-submit: CLI에서 spark 프로그램을 실행하기 위한 명령어 spark-shell: CLI에서 스칼라를 이용하여 spark 처리시 사용하는 명령어 (pyspark: CLI에서 파이썬으로 saprk 처리시 사용하는 명령어) spark-sql: CLI에서 Hive 쿼리 실행시 사용하는 명령어 세 명령어에 --version 옵션을 줘서 spark 버전을 확인할 수 있습니다. spark-version으로 실행해보니 2.4.4 버전임을 알 수 있습니다. 동시에 scala 버전과 자바개발환경을 갖추기 위해 필요한 OpenJDK 버전도 확인 가..
1. concatenate to columns with null values 널 값을 포함하는 컬럼 간에 concat하는 방법 from pyspark.sql.functions import concat_ws, col, concat spark = SparkSession.builder.getOrCreate() df = spark.createDataFrame([["1", "2"], ["2", None], ["3", "4"], ["4", "5"], [None, "6"]]).toDF("a", "b") df = df.withColumn("concat", concat(df.a, df.b)) #잘못된 접근 사례1 df = df.withColumn("concat + cast", concat(df.a.cast('string..
목차 DataFrame이란 Spark는 자료구조로 RDD와 Datafame도 지원합니다. Spark Dataframe은 R의 DataFrame, Python pandas의 DataFrame과 비슷한 구조를 가지고 있습니다. Spark의 DataFrame은 정형 데이터를 효과적으로 다룰 수 있는 방법을 제공합니다. DataFrame의 장점 DataFrame을 사용할 경우 칼럼명으로 데이터를 참조할 수 있고 SQL 쿼리를 이용하여 데이터에 접근할 수 있습니다. Spark는 Spark의 DataFrame을 pandas의 DataFrame 형태로 바꿔주는 기능도 지원합니다. RDD와 DataFrame의 차이 RDD는 mapreduce 작업을 수행하고 transformation과 action이라는 두가지 방식으로..