본문 바로가기
파이썬

파이썬 'PipelinedRDD'개체에는 PySpark에 'toDF'속성이 없습니다.

by º기록 2020. 11. 18.
반응형

Spark의 ML 모듈 ( Pipeline ML)을 사용할 수 있도록 SVM 파일을로드하고 DataFrame 으로 변환하려고합니다. Ubuntu 14.04에 새로운 Spark 1.5.0을 설치했습니다 ( spark-env.sh 구성 없음).

my_script.py 는 다음과 같습니다.

from pyspark.mllib.util import MLUtils
from pyspark import SparkContext

sc = SparkContext("local", "Teste Original")
data = MLUtils.loadLibSVMFile(sc, "/home/svm_capture").toDF()

./ spark-submit my_script.py 를 사용하여 실행 중입니다.

그리고 오류가 발생합니다.

Traceback (most recent call last):
File "/home/fred-spark/spark-1.5.0-bin-hadoop2.6/pipeline_teste_original.py", line 34, in <module>
data = MLUtils.loadLibSVMFile(sc, "/home/fred-spark/svm_capture").toDF()
AttributeError: 'PipelinedRDD' object has no attribute 'toDF'

내가 이해할 수없는 것은 내가 실행하면 다음과 같습니다.

data = MLUtils.loadLibSVMFile(sc, "/home/svm_capture").toDF()

PySpark 셸 내부에서 직접 작동합니다.

 

해결 방법

 


# SQLContext or HiveContext in Spark 1.x
from pyspark.sql import SparkSession
from pyspark import SparkContext

sc = SparkContext()

rdd = sc.parallelize([("a", 1)])
hasattr(rdd, "toDF")
## False

spark = SparkSession(sc)
hasattr(rdd, "toDF")
## True

rdd.toDF().show()
## +---+---+
## | _1| _2|
## +---+---+
## |  a|  1|
## +---+---+

물론 처음에 DataFrames 로 작업하려면 SQLContext 또는 SparkSession 이 필요합니다.

 

참조 페이지 https://stackoverflow.com/questions/32788387

 

 

반응형

댓글