전체 글
-
spark tables - managed vs unmanaged(external) tablesspark 2021. 7. 25. 18:54
Managed Table table metadata / data 를 spark 에서 관리 table drop 시 metadata 와 data 모두 삭제 data 는 spark.sql.warehouse.dir 에 정의된 곳에 저장 (spark.sql.warehouse.dir 는 cluster 에서 관리됨 - user 가 지정해 사용할 수 없다) bucketing, sorting 해 테이블 생성 가능 Unmanaged Table table metadata 는 spark 에서 관리되고, data 는 user 가 지정한 특정 위치(LOCATION) 에서 관리된다. 이미 존재하는 데이터를 대상으로 테이블 생성이 가능 이미 존재하는 데이터가 아닌 새로운 데이터로 테이블을 생성하는 것도 가능 (bucketing, s..
-
enum 을 사용한 모델링scala/basic 2021. 7. 23. 23:20
문제 연령대를 계산해 주는 다음 함수를 작성하라 /** * age 값이 * - 0 이하면 "~0" 리턴 * - 1~9 값 이면 "1~9" 리턴 * - 10~59 값 이면 "10~59" 리턴 * - 60 이상이면 "60~" 리턴 */ def ageGroup(age: Int): String = ??? Code scala standard library 로 제공되는 enum 은 기능이 빈약하니 enumeratum 을 활용해 작성한다. import AgeGroup.{Elder, Interval, Invalid} import enumeratum._ import scala.collection.immutable sealed trait AgeGroup extends EnumEntry { self => override d..
-
데이터의 partition 수와 partition 별로 레코드 수 확인 방법spark 2021. 7. 18. 21:57
문제 DataFrame df 에 대해 다음을 확인하는 방법 몇개의 partition 으로 나뉘어져 있는지? partition-id 별로 몇개의 record 가 들어 있는지? Code val df: DataFrame = ??? val numPartitions: Int = df.rdd.getNumPartitions println(numPartitions) import org.apache.spark.sql.functions.spark_partition_id df.groupBy(spark_partition_id()).count().show()
-
spark 에서 schema 를 적용해 데이터 읽기spark 2021. 7. 18. 19:17
문제 hdfs://localhost:9000/csv.txt 에 아래와 같이 csv 형식의 데이터가 있을 때 name,age,birthDay A,1,2020-01-01 B,2,2019-02-02 C,3,2018-03-03 name 은 String, age 는 Integer, birthDay 는 Date 형식으로 읽으려면? 방법1 import org.apache.spark.sql.types._ import org.apache.spark.sql.{DataFrame, SparkSession} object MySpark extends Serializable { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .master("l..
-
spark 에서 groupByKey 로 특정 column 기준 unique row 만 남기기spark 2021. 7. 16. 21:45
문제아래와 같이 Person 데이터가 있을 때nameagelocationa1Ab2Ba3C name 기준으로 unique 한 row 만 남긴다. name 이 a 인 레코드가 2개 있는데, 중복이 제거되어 둘 중 임의의 하나만 남으면 된다. 단순히 groupBy(name) 을 사용하면 age, location 에 대해 aggregation 을 해야되서 복잡해 진다. Codeimport org.apache.spark.sql.{Dataset, SparkSession}final case class Person(name: String, age: Int, location: String)object MySpark extends Serializable { def main(args: Array[String]): Unit..
-
windows10 에 hdfs 설치하기spark 2021. 7. 10. 21:05
https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=gladiator67&logNo=222106281290 Windows 10에서 Hadoop 3.3 설치 1. 아래 사이트에서 hadoop 3.3 binary을 내려받는다. https://hadoop.apache.org/releases.html Apache ... blog.naver.com 설치 후 아래처럼 root 를 public 으로 만들어 http://localhost:9870/explorer.html#/ 를 통해 자유롭게 파일을 업로드 할 수 있도록 한다. hdfs dfs -chmod -R 777 / http://localhost:9870/explorer.html#/ 이외에 window..
-
spark 을 local, cluster mode 에서 실행하기 위한 JVM option, log4j.properties 설정spark 2021. 7. 10. 20:15
log4j.proerties log4j.appender.file.File=${spark.yarn.app.container.log.dir}/${logfile.name}.log 사용에 주목할 것 !! # Set everything to be logged to the console log4j.rootCategory=WARN, console # define console appender log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.lay..