>  기사  >  백엔드 개발  >  PySpark에서 VectorUDT를 열로 어떻게 변환합니까?

PySpark에서 VectorUDT를 열로 어떻게 변환합니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 18:34:01168검색

How do you Convert VectorUDTs into Columns in PySpark?

PySpark를 사용하여 VectorUDT를 열로 분리

PySpark에서는 VectorUDT로 저장된 벡터 열에서 개별 차원을 추출해야 할 수도 있습니다. 이를 달성하려면 Spark 버전에 따라 다양한 접근 방식을 활용할 수 있습니다.

Spark >= 3.0.0

PySpark 3.0.0은 다음을 위한 내장 기능을 제공합니다. 이 작업:

<code class="python">from pyspark.ml.functions import vector_to_array

df.withColumn("xs", vector_to_array("vector")).select(["word"] + [col("xs")[i] for i in range(3)])</code>

이 작업은 벡터를 배열로 간결하게 변환하고 원하는 열을 투영합니다.

Spark < 3.0.0

3.0.0 이전 Spark 버전에는 더 복잡한 접근 방식이 필요합니다.

RDD 변환:

<code class="python">df.rdd.map(lambda row: (row.word,) + tuple(row.vector.toArray().tolist())).toDF(["word"])</code>

UDF 방법:

<code class="python">from pyspark.sql.functions import udf, col
from pyspark.sql.types import ArrayType, DoubleType

def to_array(col):
    return udf(lambda v: v.toArray().tolist(), ArrayType(DoubleType()))(col)

df.withColumn("xs", to_array(col("vector"))).select(["word"] + [col("xs")[i] for i in range(3)])</code>

참고: 성능 향상을 위해 asNondeterministic이 UDF와 함께 사용되는지 확인하세요(Spark 2.3 필요).

Scala 동등

이러한 접근 방식과 동등한 Scala는 "Spark Scala: Dataframe[벡터]를 DataFrame[f1:Double, ..., fn: Double)]로 변환하는 방법"을 참조하세요.

위 내용은 PySpark에서 VectorUDT를 열로 어떻게 변환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.