본문 바로가기

Data Engineering/Spark

(16)
[Spark] 타이타닉 데이터로 생존 예측하기 - Pipeline, LR from pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorAssembler, StandardScaler from pyspark.ml import Pipeline from pyspark.ml.classification import LogisticRegression from pyspark.sql.functions import col,stddev_samp train_df = spark.read.format('csv').options(header = 'true', inferSchema = 'true').load('titanic/train.csv').cache() 남길 컬럼들 Sex : 범주형 -> label encoding : StringIndexe..
[Spark] Pipeline, Logistic Regression 데이터 전처리 준비 from pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorAssembler, StandardScaler from pyspark.ml import Pipeline from pyspark.ml.classification import LogisticRegression from pyspark.sql.functions import col,stddev_samp df = spark.read.format('csv').options(header = 'true', inferSchema = 'true').load('Default.csv').drop('_c0').cache() 연속형, 수치형 데이터 변환 데이터프레임에 들어갈 이름들(input,..
[Spark] csv 파일 로드, 전처리, parquet 저장 csv 파일 읽기 from pyspark.sql import SQLContext from pyspark.sql.functions import * # read csv file spark_df = spark.read.format('csv').option('header','true').option('inferSchema','true').load('doc_log.csv') spark_df.show() 임시테이블로 등록 spark_df.createOrReplaceTempView("spark_df") 검색 ismydoc == true from pyspark.sql.functions import col spark_df.where(col('ismydoc') == 'true').show() df1 = spark.sql(..
[Spark] map, reduce 활용 map, reduce 활용 예제 wordcount word_counts = text.flatMap(lambda line:line.split()).map(lambda word : (word, 1)).reduceByKey(lambda x,y : x+y) word_counts.collect() 모두 2 곱하기 numbers = spark.sparkContext.parallelize([1,2,3,4,5,6,7,8,9]) numbers.map(lambda x : x*2).collect() 짝수만 필터링 numbers.filter(lambda x : x%2 == 0).collect() 모든 요소의 합 구하기 numbers.reduce(lambda x,y : x+y) 각 요소의 길이 # 각 요소의 길이 text = ..
[Spark] csv 파일 로드하고 RDD로 처리하기 csv 파일 로드하고 RDD로 처리 # csv 파일 로드 read_csv_ = "/root/spark/bydata/by-day/2011-12-09.csv" csv_lines = spark.sparkContext.textFile(read_csv_) header 없애기 header = csv_lines.first() # remove header data = csv_lines.filter(lambda line : line!=header) data.collect() data.map(lambda x: x.split(",")).take(3) x의 0,1,2번 인덱스만 추출 data.map(lambda x: x.split(",")).map(lambda x :(x[0],x[1],x[2])).take(3) # 데이터 읽..
[Spark] Spark RDD - parallelize, collect, map, flatMap, filter, sortBy, mapPartitions, glom RDD 객체 생성 # DataFrame -> RDD spark.range(100).rdd # 0~9 꺄지 담긴 rdd 객체 생성 spark.range(10).toDF("id").rdd.map(lambda row: row[0]) # RDD를 다시 dataframe으로 변환 spark.range(10).rdd.toDF() rdd 호출 후 toDF는 일반적이지 않음 myCollection = "Spark The Definitive Guide: Big Data Processing Made Simple".split() myCollection parallelize # 2개의 파티션으로 나눔 words = spark.sparkContext.parallelize(myCollection,2) map 하나의 인자를 받는 ..
[Spark] MySQL 연결 Session 새로 생성하는 방법 mysql_spark = SparkSession.builder.config('spark.jar',"mysql-connector-java-5.1.46.jar")\ .master('local').appName('pySpark_MySql').getOrCreate() [root@localhost spark]# mv mysql-connector-java-5.1.46.jar jars/ mysql-connect-java 파일을 spark가 인식할 수 있도록 spark/jars 밑으로 옮김 이 mysql-connector-java-~~~~.jar 파일은 root 밑에 있는 mysql-connector-java 폴더 밑에서 복사해왔음 실행권한 바꾸기 [root@localhost ~]# ..
[Spark] join 연산, csv, json, Parquet, ORC join person = spark.createDataFrame([ (0, "Bill Chambers", 0, [100]), (1, "Matei Zaharia", 1, [500, 250, 100]), (2, "Michael Armbrust", 1, [250, 100])])\ .toDF("id", "name", "graduate_program", "spark_status") graduateProgram = spark.createDataFrame([ (0, "Masters", "School of Information", "UC Berkeley"), (2, "Masters", "EECS", "UC Berkeley"), (1, "Ph.D.", "EECS", "UC Berkeley")])\ .toDF("id", ..