我有以下代码。。
DataFrame addressDF = sqlContext.read().parquet(addressParquetPath);
DataFrame propertyDF = sqlContext.read().parquet(propertyParquetPath);
DataFrame joinedFrame = addressDF.join(propertyDF, propertyDF.col("LOCID").equalTo(addressDF.col("locid")), "left");
joinedFrame.registerTempTable("joinedFrame");
DataFrame joinedFrameSelect = sqlContext.sql("SELECT LOCID,AddressID FROM joinedFrame");
在SelectLocID中列出了两次,我如何选择地址的LocID而不是属性。
我可以通过列索引在数据帧上执行select吗?
我通常重命名列——您可以尝试:
...join(propertyDF.withColumnRenamed("LocID", "LocID_R"), ...
或者,如果您想一次性更改DataFrame
的所有列名,例如在每个名称中添加一个代表"right"的_R
,您可以尝试以下操作:
df.toDF(df.columns.map(_ + "_R"):_*)
当您将DataFrame
连接回自身时,这非常有用。