2017-10-14 2 views
0

아래는 내 dataframe 및 코드에는 속성 맵이없는 내가 TEMP = 줄을 실행하고 언제 오류가 아래 얻을 아래 Pyspark ML 오류 객체는

df=  
a b c d  
1 3 10 110  
2 5 12 112  
3 6 17 112  
4 8 110 442 

내 코드

spark =SparkSession.builder.appName('dev_member_validate_spark').config('spark.sql.crossJoin.enabled','true').getOrCreate() 
sqlCtx=SQLContext(spark) 
from pyspark.ml.linalg import DenseVector 
from pyspark.mllib.regression import LabeledPoint 
temp = df.select("a","b").map(lambda line:LabeledPoint(line[0],[line[1:]])) 

입니다

Error:Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/cloudera/parcels/SPARK2-2.1.0.cloudera1- 
    1.cdh5.7.0.p0.120904/lib/spark2/python/pyspark/sql/dataframe.py", line 964, in __getattr__ 
    "'%s' object has no attribute '%s'" % (self.__class__.__name__, name)) 
AttributeError: 'DataFrame' object has no attribute 'map' 

Cloudera와 함께 pyspark 2.1을 사용 중입니다. 5.10

,210

나는 링크를 참조하여 위의 스크립트를하고있는 중이 야 :

https://databricks.com/product/getting-started-guide/machine-learning

이 문제를 해결 도와주세요.

답변

1

을 df.rdd 수 있습니다 별도의 ML 라이브러리가 있습니다 (당신은 선형 대수 라이브러리를 가져온있는) 첫 번째, pyspark.ml입니다. 두 번째는 입니다. pyspark.mllibLabelPoint을 가져 왔습니다.

이러한 두 패키지의 상호 운용성은 통증이 가득한 길입니다. 하나에 충실하고 그 위에있어보십시오.

둘째는 예외로 당신이있어 : temp = df.select("a","b").map(...) dfmap 방법이없는 DataFrame입니다.

하지만 내 첫 번째 조언을하시기 바랍니다 - mllibml의 모듈을 함께 사용하지 마십시오.

+0

감사합니다. 정말로 당신의 충고를 받아 들일 것입니다. 여기에서는 패키지를 가져 오는 것이 이해가되지 않는 이유가되었던 기능을 얻으려고했습니다. – user3292373

+0

언제나 기꺼이 도와 드리겠습니다. 나는 _mysib_보다 _pyspark.ml_ 라이브러리를 선호한다. 기능이 누락 된 경우 알려 주시기 바랍니다. –

2

Dataframe에는 'map'속성이 없기 때문에 가능합니다. Spark 2.0 이전에는 더 이상 없었습니다. Databricks가 자습서를 업데이트하지 않았습니다. 당신은 RDD로 변환하여 지도이, 즉 가 먼저 주목하시기 바랍니다

+0

감사합니다. Lukasz. 이제 데이터를 파악합니다. 나는 항상 데이터 프레임을 다루었 다. 이 denseVector를 다루기가 매우 어려웠습니다. 이제 단계별로 단계별로 진행하십시오. – user3292373