如何使用在DataFrame中出现两次的列名进行SELECT?

时间:2016-03-24 17:38:59

标签: apache-spark apache-spark-sql

我有以下代码..

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");
Select LocID中的

列出两次,我如何选择LocId of Address而不是property。

我可以按列索引在数据框上执行select吗?

1 个答案:

答案 0 :(得分:3)

我通常会重命名列 - 您可以尝试:

...join(propertyDF.withColumnRenamed("LocID", "LocID_R"), ...

或者,如果您想一次性更改DataFrame的所有列名称 - 例如为每个名称添加_R“右” - 您可以尝试:< / p>

df.toDF(df.columns.map(_ + "_R"):_*)

当您将DataFrame加入自身时,这非常有用。