Json은 데이터의 표준 전송 방식이다. 외부의 형태는 파이썬의 Dictionary(딕셔너리)와 매우 흡사하다.
- read.json()
#Json파일 읽는법
#sparkSession.read.json()
idColumn = StructField('id',IntegerType(),nullable=False) #컬럼명 중에서 'id'는 Int 형이다 라는 정의, False : Null값 허용 X
nameColumn = StructField('name',StringType(),nullable=False) #컬럼명 중에서 'name'은 문자열 형이다 라는 정의, False : Null값 허용 X
salaryColumn = StructField('salary',IntegerType(), nullable=True) #컬럼명 중에서 'salary'는 Int형이다 라는 정의, True : Null값 허용 O
jobColumn = StructField('job',StringType(),nullable=True) #컬럼명 중에서 'job'dms 문자열 형이다 라는 정의, True : Null값 허용 O
empSchema = StructType([idColumn, nameColumn, salaryColumn, jobColumn])
url = 'hdfs://localhost:9000/user/data/csv/employee_json.json'
empDF2 = sparkSession.read.json(path=url, schema=empSchema)
empDF2.printSchema()
empDF2.show()
* Json파일을 read.json()을 이용해 읽고 데이터 및 스키마를 출력한 것이다.
- Json형식은 기본적으로 Header의 개념이 없기 때문에 read.json()에는 header옵션이 없다.
- read.csv()와 마찬가지로 스키마를 사전에 지정 및 적용할 수 있다.
-> 물론 inferSchema 옵션 또한 가능하다.
- 읽어온 Json 데이터는 Key값 = 컬럼, Value = 필드값 형태로 DataFrame에 저장된다.
- write.json()
url = 'hdfs://localhost:9000/user/data/csv/employee_with_header.csv'
empDF = sparkSession.read.csv(url, header=True, inferSchema=True)
empDF.printSchema()
empDF.show()
empDF.write.json('hdfs://localhost:9000/user/data/json/tmp', mode='overwrite')
- Json파일을 읽고 DataFrame객체에 저장한 뒤 DataFrame의 내용을 write.json을 했을 때 결과이다.
- DataFrame을 write.json()을 통해 파일을 생성하면 파일 내용은 Json의 형태를 지닌다.
'Hadoop' 카테고리의 다른 글
Spark를 이용한 hive 접근 (0) | 2021.09.23 |
---|---|
DataFrame 가공/처리 함수(feat. Spark) (0) | 2021.09.20 |
DataFrame과 Schema(스키마) (feat. Spark (0) | 2021.09.16 |
RDD -> DataFrame(feat. Spark) (0) | 2021.09.16 |
RDD 가공/처리 함수 (0) | 2021.09.16 |
댓글