복붙노트

[PYTHON] pyspark 고정 너비 텍스트 파일 구문 분석

PYTHON

pyspark 고정 너비 텍스트 파일 구문 분석

고정 폭 텍스트 파일을 구문 분석하려고합니다.

내 텍스트 파일은 다음과 같으며 행 ID, 날짜, 문자열 및 정수가 필요합니다.

00101292017you1234
00201302017 me5678

sc.textFile (path)을 사용하여 RDD로 텍스트 파일을 읽을 수 있습니다. 나는 파싱 된 RDD와 스키마로 createDataFrame을 만들 수있다. 이 두 단계 사이를 파싱합니다.

해결법

  1. ==============================

    1.Spark의 substr 함수는 고정 너비 열을 처리 할 수 ​​있습니다. 예를 들면 다음과 같습니다.

    Spark의 substr 함수는 고정 너비 열을 처리 할 수 ​​있습니다. 예를 들면 다음과 같습니다.

    df = spark.read.text("/tmp/sample.txt")
    df.select(
        df.value.substr(1,3).alias('id'),
        df.value.substr(4,8).alias('date'),
        df.value.substr(12,3).alias('string'),
        df.value.substr(15,4).cast('integer').alias('integer')
    ).show()
    

    결과는 다음과 같습니다.

    +---+--------+------+-------+
    | id|    date|string|integer|
    +---+--------+------+-------+
    |001|01292017|   you|   1234|
    |002|01302017|    me|   5678|
    +---+--------+------+-------+
    

    분할 된 열을 사용하면 정상적인 스파크 데이터 프레임 에서처럼 다시 포맷하고 사용할 수 있습니다.

  2. from https://stackoverflow.com/questions/41944689/pyspark-parse-fixed-width-text-file by cc-by-sa and MIT license