파이스파크 읽기 CSV()

Paiseupakeu Ilg Gi Csv



CSV 데이터에서 PySpark DataFrame을 구성하는 것은 PySpark에서 read.csv() 함수를 사용하여 가능합니다. 일부 시나리오에서 외부 데이터를 PySpark DataFrame으로 로드하려는 경우 PySpark는 JSON, CSV 등과 같은 많은 형식을 지원합니다. 이 자습서에서는 CSV 데이터를 읽고 PySpark DataFrame으로 로드하는 방법을 살펴봅니다. 또한 예제를 통해 한 번에 단일 DataFrame에서 여러 CSV 파일을 로드하는 방법에 대해 설명합니다.

Pyspark.sql.DataFrameReader.csv()

이 메서드는 CSV 파일에서 데이터를 읽고 PySpark DataFrame에 저장하는 데 사용됩니다. CSV를 DataFrame으로 읽는 동안 옵션을 사용합니다. 예제와 함께 다양한 옵션에 대해 자세히 설명합니다. 하나 이상의 CSV 파일을 전달하는 동안 쉼표 연산자로 구분된 목록에서 확장자를 가진 파일 이름을 전달하는 것이 중요합니다. 하나의 CSV 파일만 읽는 경우 목록에 파일 이름을 제공할 필요가 없습니다.

통사론:







단일 파일 - spark_app.read.csv('file.csv', 옵션 ...)

여러 파일 – spark_app.read.csv(['file1.csv','file2.csv',…],options…)



옵션과 파일 이름을 분리하는 것도 가능합니다.



단일 파일 – spark_app.read.options(옵션…).csv('file.csv')





여러 파일 – spark_app.read.options(옵션…).csv(['file1.csv','file2.csv',…])

다음 예제를 구현하기 전에 PySpark 라이브러리를 설치하십시오.



핍 설치 pyspark

성공적으로 설치한 후 다음과 같은 출력을 볼 수 있습니다.

시나리오 1: CSV 파일 헤더 읽기

다음과 같이 5개의 레코드가 있는 'person_skill.csv'라는 이름의 CSV 파일을 만들어 PySpark DataFrame에 로드해 보겠습니다.

헤더 매개변수는 PySpark DataFrame에서 열 이름을 지정하는 데 사용됩니다. 부울 값을 사용합니다. “True”이면 CSV 파일에 존재하는 실제 열 이름이 DataFrame에 지정되고, 그렇지 않으면 c0, c1, c2…가 지정되고 실제 열 이름이 행이 됩니다. 헤더 매개변수를 true로 설정하는 것이 가장 좋습니다.

예 1: 헤더 = True

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

linuxhint_spark_app = SparkSession.builder.appName( '리눅스 힌트' ).getOrCreate()

# - person_skill.csv라는 csv를 헤더가 있는 열 레이블이 있는 기술에 로드합니다.

기술 = linuxhint_spark_app.read.csv( 'person_skill.csv' , 머리글 =참)

# DataFrame 표시

Skills.show()

산출:

설명:

지정된 열과 행이 있는 CSV 파일에서 PySpark DataFrame이 생성된 것을 볼 수 있습니다.

다음 명령을 사용하여 열을 확인합니다.

기술.열

예 2: 헤더 = 거짓

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

linuxhint_spark_app = SparkSession.builder.appName( '리눅스 힌트' ).getOrCreate()

# - person_skill.csv라는 csv를 헤더 없이 열 레이블이 있는 기술에 로드합니다.

기술 = linuxhint_spark_app.read.csv( 'person_skill.csv' , 머리글 =거짓)

# DataFrame 표시

Skills.show()

산출:

설명:

기존 열 없이 CSV 파일에서 PySpark DataFrame이 생성된 것을 볼 수 있습니다.

또한 기존 열은 PySpark DataFrame에 행으로 저장됩니다.

기술.열

Read.options.csv() 사용

이제 read.options.csv() 메서드를 사용하여 CSV 파일을 읽습니다. 여기에서 csv()의 인수 및 파일 이름으로 옵션의 구분 기호, 헤더 등과 같은 옵션을 전달해야 합니다. 'True'로 설정하여 헤더 매개변수를 전달해 보겠습니다.

시나리오 1:

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

linuxhint_spark_app = SparkSession.builder.appName( '리눅스 힌트' ).getOrCreate()

# read.options.csv() 사용

기술 = linuxhint_spark_app.read. 옵션 ( 머리글 =참).csv( 'person_skill.csv' )

# DataFrame 표시

Skills.show()

산출:

시나리오 2: CSV 파일 구분 기호 읽기

delimiter 매개변수는 각 필드를 구분하는 데 사용되는 문자를 사용합니다. 기본적으로 쉼표(,)를 사용합니다. 첫 번째 시나리오에서 사용한 것과 동일한 CSV 파일을 사용하고 구분 기호로 쉼표(',')를 전달합니다.

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

linuxhint_spark_app = SparkSession.builder.appName( '리눅스 힌트' ).getOrCreate()

# 헤더와 함께 구분 기호와 함께 read.options.csv() 사용

기술 = linuxhint_spark_app.read. 옵션 ( 머리글 =참,구분자= ',' ).csv( 'person_skill.csv' )

# DataFrame 표시

Skills.show()

산출:

여러 파일 읽기

지금까지 단일 CSV 파일을 읽어왔습니다. 둘 이상의 CSV 파일을 읽는 방법을 살펴보겠습니다. 이 시나리오에서는 여러 파일의 행이 단일 PySpark DataFrame에 추가됩니다. 메소드 내의 목록에 있는 파일 이름을 전달하기만 하면 됩니다.

예:

다음 데이터가 포함된 'person_skill.csv' 및 'person_skill2.csv'라는 CSV 파일이 있다고 가정해 보겠습니다.


이 두 CSV 파일을 읽고 단일 PySpark DataFrame에 저장합니다.

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

linuxhint_spark_app = SparkSession.builder.appName( '리눅스 힌트' ).getOrCreate()

# person_skill.csv 및 person_skill2.csv라는 2개의 csv 파일을 헤더가 있는 열 레이블이 있는 스킬에 로드합니다.

기술 = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],9월= ',' , 머리글 =참)

Skills.show()

산출:

설명:

첫 번째 CSV에는 6개의 레코드가 있고 두 번째 CSV에는 3개의 레코드가 있습니다. 첫 번째 CSV가 먼저 DataFrame에 로드되는 것을 볼 수 있습니다. 그런 다음 두 번째 CSV가 로드됩니다. 마지막으로 PySpark DataFrame은 9개의 레코드를 보유합니다.

결론

CSV를 PySpark DataFrame으로 읽는 것은 pyspark.sql.DataFrameReader.csv() 메서드를 사용하면 매우 간단합니다. 열과 형식을 지정하기 위해 헤더 및 구분 기호 매개 변수를 이 메서드에 전달할 수 있습니다. PySpark는 옵션과 함께 제공된 메서드를 사용하여 한 번에 여러 CSV 파일 읽기를 지원합니다. 이 기사에서는 다양한 옵션을 고려하여 예제를 살펴보았습니다. 또한 메서드에 옵션을 전달하는 두 가지 방법을 살펴보았습니다.