как получить значение ячейки по индексу в pyspark?

#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 ? с какой ошибкой вы столкнулись?