Я сделал что-то подобное, но в Scala , вы можете конвертировать то же самое в pyspark ...
Переименуйте имена столбцов в каждом кадре данных
dataFrame1.columns.foreach(columnName => {
dataFrame1 = dataFrame1.select(dataFrame1.columns.head, dataFrame1.columns.tail: _*).withColumnRenamed(columnName, s"left_$columnName")
})
dataFrame1.columns.foreach(columnName => {
dataFrame2 = dataFrame2.select(dataFrame2.columns.head, dataFrame2.columns.tail: _*).withColumnRenamed(columnName, s"right_$columnName")
})
Теперь join
, упомянув имена столбцов
resultDF = dataframe1.join(dataframe2, dataframe1("left_c_0") === dataframe2("right_c_0"))
I think you want to create a closure here as values are being garbage collected/moved away from the scope chain before you can access them. Pass row
to a closure for access later or to some other function that can handle the value while it's still in scope.
More info: Working With Closures
Я написал пример этой и других транзакций SQL по адресу: http://wecreategames.com/blog/?p=219
Вы должны выполнять вызовы executeSql WebKit в асинхронном стиле. Чтобы обойти это, вы должны:
function(tx, error) {
}
выполнить что-то для обновления ваших данных. Что-то вроде: