Мне нужно создать tempViews из фреймов данных, затем мне нужно присоединиться к этим tempviews и удалить повторяющиеся столбцы. Итак, я написал код, как указано ниже:
Data1 = [ ("xx1",34,60),
("xx2",33,80),
("xx3",37,50) ]
dataSchema1 = StructType([
StructField("Name",StringType(),True),
StructField("Age",IntegerType(),True),
StructField("Id",IntegerType(),True)
])
Data2 = [ (60,"M",3000.60),
(80,"F",3300.80),
(50,"M",5000.50) ]
dataSchema2 = StructType([
StructField("Id",IntegerType(),True),
StructField("Gender", StringType(), True),
StructField("Salary", DoubleType(), True)
])
df1 = spark.createDataFrame(spark.sparkContext.parallelize(Data1),schema=dataSchema1)
df1.createOrReplaceTempView('view1')
df2 = spark.createDataFrame(spark.sparkContext.parallelize(Data2),schema=dataSchema2)
df2.createOrReplaceTempView('view2')
jDF=spark.sql("select * from view1 join view2 on view1.Id = view2.Id")
jDF.columns // ['Name', 'Age', 'Id', 'Id', 'Gender', 'Salary']
rjDF=jDF.drop('view2.ID') //this function is not working
rjDF.columns // ['Name', 'Age', 'Id', 'Id', 'Gender', 'Salary']
В приведенном выше коде метод drop column не работает должным образом, а также не вызывает никаких ошибок. Однако, если я попытаюсь отбросить столбцы с использованием фреймов данных (что, очевидно, не является предпочтительным выбором для меня в моем случае использования), тогда метод drop работает нормально.
joinDF=df1.join(df2, df1.Id == df2.Id)
dropped=joinDF.drop(df2.Id) // working absolutely fine
dropped.columns // ['Name', 'Age', 'Id', 'Gender', 'Salary']
может ли кто-нибудь помочь мне понять, что неправильно с первым подходом удаления столбца из объединенных временных представлений?