파이스파크 읽기 JSON()

Paiseupakeu Ilg Gi Json



PySpark DataFrame으로 작업하는 동안 JSON 데이터를 처리하려면 PySpark DataFrame에 저장해야 합니다. DataFrame에 저장한 후 데이터에 다양한 작업과 메서드를 적용할 수 있습니다. 또한 JSON을 PySpark DataFrame으로 변환하면 간단하고 더 간단한 방법으로 데이터를 변환/파티션할 수 있기 때문에 많은 이점이 있습니다.

내용 주제:

Pandas.read_json()을 사용하여 JSON을 PySpark DataFrame으로 읽기







Spark.read.json()을 사용하여 JSON을 PySpark DataFrame으로 읽기



PySpark SQL을 사용하여 JSON을 PySpark DataFrame으로 읽기



이 튜토리얼에서는 pandas.read_json(), spark.read.json() 및 spark.sql을 사용하여 JSON을 PySpark DataFrame으로 읽는 방법을 살펴봅니다. 모든 시나리오에서 다양한 JSON 형식을 고려하여 다양한 예를 살펴보겠습니다.





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

핍 설치 pyspark

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



Pandas.read_json()을 사용하여 JSON을 PySpark DataFrame으로 읽기

PySpark에서는 createDataFrame() 메서드를 사용하여 DataFrame을 직접 생성합니다. 여기서는 pandas.read_json() 메서드를 통해 JSON 파일/경로를 JSON 파일에 전달하기만 하면 됩니다. 이 read_json() 메서드는 Pandas 모듈에서 사용할 수 있는 파일 이름/경로를 사용합니다. 이것이 Pandas 모듈을 가져와서 활용해야 하는 이유입니다.

통사론:

spark_app.createDataFrame(pandas.read_json( 'file_name.json' ))

예:

2개의 레코드를 포함하는 'student_skill.json'이라는 JSON 파일을 생성해 보겠습니다. 여기서 키/열은 'Student 1'과 'Student 2'입니다. 행은 name, age, Skill1 및 Skill2입니다.

파이스파크 가져오기

수입 판다

pyspark.sql에서 SparkSession 가져오기

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

# pandas.read_json() 사용

candidate_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

candidate_skills.show()

산출:

JSON 데이터가 지정된 열과 행이 있는 PySpark DataFrame으로 변환되는 것을 볼 수 있습니다.

2. Spark.read.json()을 사용하여 JSON을 PySpark DataFrame으로 읽기

read.json()은 Pandas의 read_json()과 유사한 메서드입니다. 여기에서 read.json()은 JSON 또는 직접 JSON 파일에 대한 경로를 가져와 PySpark DataFrame에 직접 로드합니다. 이 시나리오에서는 createDataFrame() 메서드를 사용할 필요가 없습니다. 한 번에 여러 JSON 파일을 읽으려면 쉼표로 구분된 목록을 통해 JSON 파일 이름 목록을 전달해야 합니다. 모든 JSON 레코드는 단일 DataFrame에 저장됩니다.

통사론:

단일 파일 - spark_app.read.json( 'file_name.json' )

여러 파일 - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

시나리오 1: 한 줄의 JSON 읽기

JSON 파일이 record1, record2, record3… (한 줄) 형식인 경우 한 줄로 JSON이라고 부를 수 있습니다. Spark는 이러한 레코드를 처리하고 PySpark DataFrame에 행으로 저장합니다. 각 레코드는 PySpark DataFrame의 행입니다.

3개의 레코드를 포함하는 'candidate_skills.json'이라는 JSON 파일을 생성해 보겠습니다. 이 JSON을 PySpark DataFrame으로 읽습니다.

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

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

# PySpark DataFrame으로 candidate_skills.json을 읽습니다.

candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

candidate_skills.show()

산출:

JSON 데이터가 지정된 레코드 및 열 이름과 함께 PySpark DataFrame으로 변환되는 것을 볼 수 있습니다.

시나리오 2: 여러 줄이 있는 JSON 읽기

JSON 파일에 여러 줄이 있는 경우 read.option().json() 메서드를 사용하여 true로 설정해야 하는 multiline 매개 변수를 전달해야 합니다. 이를 통해 여러 줄이 있는 JSON을 PySpark DataFrame에 로드할 수 있습니다.

읽기 옵션( '여러 줄' , '진실' ).json( 'file_name.json' )

3개의 레코드를 보유하는 'multi.json'이라는 JSON 파일을 생성해 보겠습니다. 이 JSON을 PySpark DataFrame으로 읽습니다.

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

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

# multi.json(여러 줄 포함)을 PySpark DataFrame으로 읽습니다.

candidate_skills = linuxhint_spark_app.read.option( '여러 줄' , '진실' ).json( '다중.json' )

candidate_skills.show()

산출:

시나리오 3: 여러 JSON 읽기

이 자습서의 시작 단계에서 여러 JSON 파일에 대해 이미 논의했습니다. 한 번에 여러 JSON 파일을 읽고 단일 PySpark DataFrame에 저장하려면 파일 이름 목록을 read.json() 메서드에 전달해야 합니다.

'candidate_skills.json' 및 'candidate_skills2.json'이라는 두 개의 JSON 파일을 만들어 PySpark DataFrame에 로드해 보겠습니다.

'candidate_skills.json' 파일에는 세 개의 레코드가 있습니다.

'candidate_skill2.json' 파일은 단일 레코드만 보유합니다.

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

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

# PySpark DataFrame으로 한 번에 candidate_skills 및 candidate_skills2 파일을 읽습니다.

candidate_skills = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])

candidate_skills.show()

산출:

마지막으로 DataFrame에는 4개의 레코드가 있습니다. 처음 세 개의 레코드는 첫 번째 JSON에 속하고 마지막 레코드는 두 번째 JSON에 속합니다.

Spark.read.json()을 사용하여 JSON을 PySpark DataFrame으로 읽기

read.json()은 Pandas의 read_json()과 유사한 메서드입니다. 여기에서 read.json()은 JSON 또는 직접 JSON 파일에 대한 경로를 가져와 PySpark DataFrame에 직접 로드합니다. 이 시나리오에서는 createDataFrame() 메서드를 사용할 필요가 없습니다. 한 번에 여러 JSON 파일을 읽으려면 쉼표로 구분된 목록을 통해 JSON 파일 이름 목록을 전달해야 합니다. 모든 JSON 레코드는 단일 DataFrame에 저장됩니다.

통사론:

단일 파일 - spark_app.read.json( 'file_name.json' )

여러 파일 - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

시나리오 1: 한 줄의 JSON 읽기

JSON 파일이 record1, record2, record3… (한 줄) 형식인 경우 한 줄로 JSON이라고 부를 수 있습니다. Spark는 이러한 레코드를 처리하고 PySpark DataFrame에 행으로 저장합니다. 각 레코드는 PySpark DataFrame의 행입니다.

3개의 레코드를 포함하는 'candidate_skills.json'이라는 JSON 파일을 생성해 보겠습니다. 이 JSON을 PySpark DataFrame으로 읽습니다.

파이스파크 가져오기

pyspark.sql에서 SparkSession 가져오기

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

# PySpark DataFrame으로 candidate_skills.json을 읽습니다.

candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

candidate_skills.show()

산출:

JSON 데이터가 지정된 레코드 및 열 이름과 함께 PySpark DataFrame으로 변환되는 것을 볼 수 있습니다.

PySpark SQL을 사용하여 JSON을 PySpark DataFrame으로 읽기

PySpark SQL을 사용하여 JSON 데이터의 임시 보기를 생성할 수 있습니다. 직접 임시 뷰를 생성할 때 JSON을 제공할 수 있습니다. 다음 구문을 살펴보십시오. 그런 다음 SELECT 명령을 사용하여 PySpark DataFrame을 표시할 수 있습니다.

통사론:

spark_app.sql( 'json 옵션을 사용하여 TEMPORARY VIEW VIEW_NAME 생성(경로 'file_name.json')' )

여기서 'VIEW_NAME'은 JSON 데이터의 보기이고 'file_name'은 JSON 파일의 이름입니다.

예 1:

이전 예제에서 사용된 JSON 파일인 'candidate_skills.json'을 고려하십시오. '*' 연산자와 함께 SELECT를 사용하여 DataFrame에서 모든 행을 선택합니다. 여기서 *는 PySpark DataFrame에서 모든 열을 선택합니다.

파이스파크 가져오기

수입 판다

pyspark.sql에서 SparkSession 가져오기

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

# spark.sql을 사용하여 JSON에서 VIEW 생성

후보_기술 = linuxhint_spark_app.sql( 'json 옵션을 사용하여 임시 뷰 Candidate_data 생성(경로 'candidate_skills.json')' )

# SELECT 쿼리를 사용하여 Candidate_data에서 모든 레코드를 선택합니다.

linuxhint_spark_app.sql( 'Candidate_data에서 * 선택' ).보여주다()

산출:

PySpark DataFrame(JSON에서 읽음)의 총 레코드 수는 3입니다.

예 2:

이제 연령 열을 기반으로 PySpark DataFrame의 레코드를 필터링합니다. 나이에 '보다 큼' 연산자를 사용하여 나이가 22보다 큰 행을 가져옵니다.

# SELECT 쿼리를 사용하여 연령 > 22인 레코드를 선택합니다.

linuxhint_spark_app.sql( '연령이 22세 이상인 Candidate_data에서 * 선택' ).보여주다()

산출:

PySpark DataFrame에는 나이가 22보다 큰 레코드가 하나만 있습니다.

결론

JSON을 PySpark DataFrame으로 읽는 세 가지 방법을 배웠습니다. 먼저 Pandas 모듈에서 사용할 수 있는 read_json() 메서드를 사용하여 JSON을 PySpark DataFrame으로 읽는 방법을 배웠습니다. 다음으로 option()과 함께 spark.read.json() 메서드를 사용하여 단일/다중 JSON 파일을 읽는 방법을 배웠습니다. 한 번에 여러 JSON 파일을 읽으려면 파일 이름 목록을 이 메서드에 전달해야 합니다. PySpark SQL을 사용하여 JSON 파일을 임시 보기로 읽어오고 SELECT 쿼리를 사용하여 DataFrame을 표시합니다.