問題
你選擇從DataFrame列,你得到一個錯誤消息。
錯誤:AttributeError:“函數”對象沒有屬性“_get_object_id”工作
導致
DataFrame API包含少量的保護關鍵字。
如果一列DataFrame使用受保護的關鍵字作為列名稱,你將得到一個錯誤消息。
例如,總結是一個受保護的關鍵字。如果使用彙總列名稱,您將看到錯誤消息。
這個示例代碼使用總結作為一個列名和運行時生成錯誤消息。
% python df =火花。createDataFrame ([1, 2],“int”) .toDF (" id ") df.show pyspark.sql ()。類型進口StructType、StructField StringType, IntegerType df1 =火花。createDataFrame([(10),(11),(13日)],StructType ([StructField(“摘要”,IntegerType(),真的))))df1.show () ResultDf = df1。加入(df df1。總結= = df。id、“內在”).select (df.id df1.summary) ResultDf.show ()
解決方案
不應該使用DataFrame API保護關鍵字列名。
如果你必須使用保護的關鍵字,您應該使用支架基礎從DataFrame列訪問在選擇列。不要使用點符號在選擇列使用受保護的關鍵字。
python ResultDf = df1 %。(“摘要”)加入(df df1 df = =。id、“內在”).select (df.id df1(“摘要”))