问题
你选择从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(“摘要”))