首页 > 解决方案 > 如何通过pyspark中的索引获取单元格值?

问题描述

我想让单元格值传递给 SQL 查询中的 where 条件。下面一个是我的数据框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 查询无法获取值到 SQL 查询中

标签: mysqlsqlpython-3.xapache-sparkpyspark

解决方案


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'])

推荐阅读