1

원자 값을 중첩하지 않고 pySpark에서 중첩 구조를 반환하는 UDF를 사용하고 싶습니다. UDF를 등록하고 반환 할 객체의 스키마를 수동으로 설정할 수 있다는 것을 알고 있습니다.pySpark의 UDF에서 반환 된 객체의 스키마를 동적으로 추론

format = ArrayType(
        StructType([ 
           StructField('id',IntegerType()), 
           StructField('text',StringType()) 
           ] 
       ) 
spark.udf.register('functionName', functionObject, format) 

과 같은 형식으로 일치하도록 UDF 내부의 파이썬 목록을 사용하십시오.

return [[1,'A'],[2,'B']] 

하지만 UDF를 등록 할 때 반환 유형을 설정 명시 적으로 피할 수있는 방법이있다, 대신 자동으로 스키마를 추론?

리턴 유형을 설정하지 않으면 자동으로 StringType으로 설정됩니다.

답변

0

UDF를 등록 할 때 반환 유형을 명시 적으로 설정하지 않고 스키마를 자동으로 유추하는 방법이 있습니까?

없습니다. udf가 호출되기 전에 스키마를 알고 있어야하며 런타임에 유추 할 수 없습니다.

+0

하지만 spark-xml, csv 등으로 읽을 때 스키마를 알 수 없으며 런타임에 유추됩니다. 내 UDF에 사용할 수있는 기능이 있습니까? 스파크 리더는 스키마를 어떻게 추론합니까? – Johnny16

관련 문제