1. Learn
  2. /
  3. Courses
  4. /
  5. R에서 sparklyr로 시작하는 Spark

Connected

Exercise

Parquet 파일 다루기

CSV 파일은 R의 data.frame이나 Spark DataFrame 같은 직사각형 데이터 객체를 디스크에 저장할 때 유용해요. 하지만 읽고 쓰는 데 매우 느려서 대용량 데이터셋에는 적합하지 않아요. Parquet 파일은 더 높은 성능을 제공하는 대안이에요. Spark 데이터뿐 아니라 Hadoop 생태계의 다른 도구(예: Shark, Impala, Hive, Pig)와도 함께 사용할 수 있어요.

기술적으로 말하면, parquet file이라는 표현은 정확하지 않아요. 데이터를 parquet 형식으로 저장하면 실제로는 여러 개의 파일이 들어 있는 하나의 디렉터리가 생성돼요. 데이터는 여러 개의 .parquet 파일로 분할되어 여러 머신에 쉽게 분산 저장될 수 있고, 각 열의 내용을 설명하는 메타데이터 파일들도 함께 포함돼요.

sparklyr는 spark_read_parquet()를 사용해 parquet 파일을 가져올 수 있어요. 이 함수는 Spark 연결, 생성할 Spark DataFrame의 이름 문자열, 그리고 parquet 디렉터리 경로를 받습니다. 이 함수는 데이터를 R로 가져온 뒤 copy_to()로 R에서 Spark로 복사하는 것보다 보통 더 빠르게 데이터를 직접 Spark로 가져와요.

spark_read_parquet(sc, "a_dataset", "path/to/parquet/dir")

Instructions

100 XP

spark_conn으로 Spark 연결이 준비되어 있고, parquet 디렉터리(현재 R이 실행 중인 파일 시스템 상)를 가리키는 문자열이 parquet_dir로 제공되어 있어요.

  • dir()를 사용해 parquet 디렉터리 안 파일들의 ‘절대’ 경로 목록을 가져오고, 결과를 filenames에 할당하세요.
    • 첫 번째 인수는 파일을 나열할 디렉터리인 parquet_dir이어야 해요.
    • 상대 경로가 아닌 절대 경로를 받으려면 full.names = TRUE를 함께 전달하세요.
  • 두 개의 열을 가진 data_frame을 만드세요.
    • filename에는 방금 가져온 파일 이름에서 디렉터리 부분을 뺀 값이 들어가야 해요. 이를 위해 파일 이름을 basename()에 전달하세요.
    • size_bytes에는 해당 파일들의 크기가 바이트 단위로 들어가야 해요. 이를 위해 파일 이름을 file.size()에 전달하세요.
  • spark_read_parquet()를 사용해 timbre 데이터를 Spark로 가져오고, 결과를 timbre_tbl에 할당하세요.
    • 첫 번째 인수는 Spark 연결이에요.
    • 두 번째 인수는 "timbre"여야 해요.
    • 세 번째 인수는 parquet_dir이어야 해요.