[HADOOP] Spark / Python에서 누락 된 누락 값 전달
HADOOPSpark / Python에서 누락 된 누락 값 전달
내 Spark 데이터 프레임의 누락 된 값을 이전의 null이 아닌 값 (있는 경우)으로 채우려고합니다. 나는 Python / Pandas에서 이런 유형의 작업을 수행했지만 내 데이터는 팬다 (작은 클러스터에서)에 비해 너무 크고 Spark 멍청이입니다. 스파크가 할 수있는 일인가요? 여러 열에 대해이 작업을 수행 할 수 있습니까? 그렇다면 어떻게? 그렇지 않은 경우 Hadoop 도구 모음 내에서 대체 방법에 대한 제안이 있습니까?
감사!
해결법
-
==============================
1.Windows를 사용하여 추가 코딩없이 작동하는 솔루션을 발견했습니다. Jeff가 맞았습니다. 해결책이 있습니다. 전체 코드 boelow, 나는 그것이 무엇을하는지 간단히 설명 할 것이다. 더 자세한 내용은 블로그를 보라.
Windows를 사용하여 추가 코딩없이 작동하는 솔루션을 발견했습니다. Jeff가 맞았습니다. 해결책이 있습니다. 전체 코드 boelow, 나는 그것이 무엇을하는지 간단히 설명 할 것이다. 더 자세한 내용은 블로그를 보라.
from pyspark.sql import Window from pyspark.sql.functions import last import sys # define the window window = Window.orderBy('time')\ .rowsBetween(-sys.maxsize, 0) # define the forward-filled column filled_column_temperature = last(df6['temperature'], ignorenulls=True).over(window) # do the fill spark_df_filled = df6.withColumn('temperature_filled', filled_column_temperature)
따라서 아이디어는 항상 실제 행과 이전의 모든 행을 포함하는 데이터를 통해 창 슬라이딩을 정의하는 것입니다.
window = Window.orderBy('time')\ .rowsBetween(-sys.maxsize, 0)
시간별로 정렬하므로 데이터의 순서가 정확합니다. 또한 "-sys.maxsize"를 사용하면 창에 항상 이전의 모든 데이터가 포함되고 데이터가 위에서 아래로 이동하면서 계속 증가하지만 더 효율적인 솔루션이있을 수 있습니다.
"마지막"함수를 사용하여, 우리는 항상 그 윈도우의 마지막 행을 처리합니다. "ignorenulls = True"를 전달하면 현재 행이 null 인 경우 함수가 창에서 가장 최근 (마지막)이 아닌 null 값을 반환하도록 정의합니다. 그렇지 않으면 실제 행의 값이 사용됩니다.
끝난.
from https://stackoverflow.com/questions/38131982/forward-fill-missing-values-in-spark-python by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 로컬로 스파크 작업을 실행할 때 "Scheme : gs에 대한 파일 시스템 없음" (0) | 2019.06.11 |
---|---|
[HADOOP] 데이터를 HDFS로 복사 할 때 createBlockOutputStream의 예외 (0) | 2019.06.11 |
[HADOOP] Apache Spark을 사용하여 pdf / audio / video 파일 (구조화되지 않은 데이터)을 읽을 수 있습니까? (0) | 2019.06.11 |
[HADOOP] 와일드 카드가있는 Hadoop HDFS 사본? (0) | 2019.06.11 |
[HADOOP] 돼지 :리스트에 변수 위에 루프를 쓸 수 있습니까? (0) | 2019.06.11 |