복붙노트

[HADOOP] Spark fillNa가 null 값을 대체하지 않습니다.

HADOOP

Spark fillNa가 null 값을 대체하지 않습니다.

나는 다음과 같은 데이터 세트를 가지고 있으며 null 값을 포함하고 있으며, spark에서 fillna를 사용하여 null 값을 대체해야한다.

DataFrame :

df = spark.read.format("com.databricks.spark.csv").option("header‌​","true").load("/sam‌​ple.csv")

>>> df.printSchema();
root
 |-- Age: string (nullable = true)
 |-- Height: string (nullable = true)
 |-- Name: string (nullable = true)

>>> df.show()
+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10|    80|Alice|
|  5|  null|  Bob|
| 50|  null|  Tom|
| 50|  null| null|
+---+------+-----+

>>> df.na.fill(10).show()

na 값을 주면 변경되지 않고 동일한 데이터 프레임이 다시 나타납니다.

+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10|    80|Alice|
|  5|  null|  Bob|
| 50|  null|  Tom|
| 50|  null| null|
+---+------+-----+

새 데이터 프레임을 만들고 데이터 프레임에 채우기 값을 저장하려고 시도했지만 결과는 변경되지 않았습니다.

>>> df2 = df.na.fill(10)

null 값을 대체하는 방법은 무엇입니까? fill na를 사용하여 가능한 방법을 알려주십시오. 미리 감사드립니다.

해결법

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

    1.Height 열이 숫자가 아닌 것 같습니다. df.na.fill (10)을 호출하면 spark는 숫자 열인 유형 10과 일치하는 열만 null로 바꿉니다.

    Height 열이 숫자가 아닌 것 같습니다. df.na.fill (10)을 호출하면 spark는 숫자 열인 유형 10과 일치하는 열만 null로 바꿉니다.

    Height 컬럼이 문자열 일 필요가 있다면, df.na.fill ('10 '). show ()를 시도해 볼 수 있습니다. 그렇지 않으면 IntegerType ()에 캐스팅하는 것이 필요합니다.

  2. ==============================

    2.원하는 경우 각 열에 특정 기본값을 제공 할 수도 있습니다.

    원하는 경우 각 열에 특정 기본값을 제공 할 수도 있습니다.

    df.na.fill({'Height': '10', 'Name': 'Bob'})
    
  3. from https://stackoverflow.com/questions/40395932/spark-fillna-not-replacing-the-null-value by cc-by-sa and MIT license