#mysql #sql #python-3.x #apache-spark #pyspark
#mysql #sql #python-3.x #apache-spark #pyspark
Вопрос:
Я хочу получить значение ячейки для передачи в условие where в SQL-запросе. ниже приведен мой фрейм данных ab. фрейм данных имеет только различные значения
---------- --------
|Months | YEAR|
---------- --------
| 3| 2018|
| 2| 2014|
---------- --------
на основе этого мне нужно передать значение в SQL-запрос
for i in range(0,ab.count()):
query = "select * from customer where YEAR= " ab['YEAR'][i] " and Months=" ab['Months'][i]
df = sqlContext.read.format("jdbc").options(url="jdbc:mysql://localhost:3306/ohcdemo",driver="com.mysql.jdbc.Driver",query=query,user="root",password="root").load()
и он должен добавляться к фрейму данных путем записи SQL-запроса, который не может получить значение в SQL-запросе
Ответ №1:
Фреймы данных Spark не упорядочены, поэтому указывать индекс бессмысленно. Также вы перезаписываете фрейм данных на каждой итерации цикла for.
Чтобы делать то, что вы хотите, я бы предложил сделать join
. Обратите внимание, что я изменил query
параметр в программе чтения JDBC.
df = sqlContext.read.format("jdbc").options(
url="jdbc:mysql://localhost:3306/ohcdemo",
driver="com.mysql.jdbc.Driver",
query="select * from customer",
user="root",
password="root"
).load()
joined_df = ab.join(df, ['Months', 'YEAR'])
Комментарии:
1. есть ли какая-либо альтернатива для этого соединения, которое не будет работать должным образом
2. @SS что означает
not work as expected
? с какой ошибкой вы столкнулись?