목록 bigdata (14)
KEEP GOING

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이라는 두가지 방식으로..

우지의 워크플로는 action 노드와 control 노드로 구성된다. action 노드란 각각의 실제 작업단위(workflow task)를 말하며 control 노드는 여러 action들이 어떤 조건에 의해 어떤 순서로 진행될 것인지를 지정한다. 유의할 것은 action 노드에 의해 실시되는 모든 작업(computation task)은 기본적으로 하둡의 맵리듀스 프레임워크 속에서 진행되므로 실제 작업은 우지와는 별개의 것으로 수행된다는 점이다. 즉 우지의 워크플로 action은 원격 시스템에서의 작업(job) 형태로 수행되고, 작업이 완료되면 해당 원격시스템은 우지를 호출(callback)해 그 작업이 완료됐음을 알려준다. 우지는 이러한 작업완료 통보를 받은 후 지정돼있던 다음 작업을 진행하도록 조치한다..

SSH를 사용하여 Amazon EMR 마스터 노드에 연결하는데 발생한 오류이다. .bashrc 수정을 잘못해서 생기는 문제로 다음 명령어를 사용하여 .bashrc에 환경변수를 추가해주면 된다. $ export PATH="/usr/bin/:$PATH" ※ export 명령에 의해 변경된 환경 변수는 export 명령을 실행한 사용자의 로그아웃 전까지만 유효하므로 영구적으로 변경하기 위해서는 환경 변수를 정의하는 설정 파일(/etc/profile 등) 을 직접 수정해야 한다.

AWS EMR 기반 클러스터를 생성하여 스파크 쉘을 통해 실습하는 도중 발생한 문제이다. hdfs에서 데이터를 가져와야 하는데 로컬 파일 시스템 경로에 접근하여 문제가 발생하였다. $ hdfs dfs -put 다음 명령어를 통해 로컬 파일 시스템 경로의 데이터를 hdfs로 옮겨야 한다. 우선 hdfs에 디렉터리를 생성해 주었는데 이 명령어는 아래와 같다. $ hdfs dfs -mkdir -p /dataset 확인 결과, hdfs에 디렉터리가 잘 생성됨을 알 수 있었다. 그리고 나서 로컬 파일 시스템에 bigdata-input.txt을 다운 받았다. 위에서 언급한대로, 로컬 파일 시스템의 데이터를 hdfs 상의 디렉터리로 옮겨주었다. 스파크 쉘에 접속하여 다시 sc.textFile()을 다시 실행하면 문제..