2017-12-08 2 views
0

をそれを解決するためにどのように欠けている正常に動作している:pyspark 2.2何の属性「マップ」を持っていない「DATAFRAME」オブジェクトは、下位互換性は、私はコードの下スパーク1.6で働いていたとき

ddl = sqlContext.sql("""show create table {mytable }""".format(mytable="""mytest.my_dummytable""")) 
map(''.join, ddl\ 
.map(lambda my_row: [str(data).replace("`", "'") for data in my_row])\ 
.collect()) 

しかし、私は、火花2.2に移動しました。次の例外があります。

--------------------------------------------------------------------------- 

AttributeError       Traceback (most recent call last) 
<ipython-> in <module>() 
     1 ddl = sqlContext.sql("""show create table {mytable }""".format(mytable ="""mytest.my_dummytable""")) 
----> 2 map(''.join, ddl..map(lambda my_row: [str(data).replace("`", "'") for data in my_row]).collect()) 

spark2/python/pyspark/sql/dataframe.py in __getattr__(self, name) 
      if name not in self.columns: 
       raise AttributeError(
->     "'%s' object has no attribute '%s'" % (self.__class__.__name__, name)) 
      jc = self._jdf.apply(name) 
      return Column(jc) 

AttributeError: 'DataFrame' object has no attribute 'map' 

答えて

1

最初に.rddに電話する必要があります。スパーク2.0はエイリアスを停止しましたdf.map()df.rdd.map()thisを参照してください。

+0

ここで私は下位互換性が欠けています。私にはどうか提案してください。既存のコードを変更することで問題を解決してください。 –

+0

@DastagiriShaik '.map'を呼び出す前にデータフレームで' .rdd'を呼び出すだけです。 – Justin

+0

@DastagiriShaikあなたの場合は、 'sqlContext.sql(" ... ")。rdd.map(...)'です。 – Justin

関連する問題