Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于oracle子查询的Pyspark sql_Pyspark_Pyspark Sql_Pyspark Dataframes - Fatal编程技术网

用于oracle子查询的Pyspark sql

用于oracle子查询的Pyspark sql,pyspark,pyspark-sql,pyspark-dataframes,Pyspark,Pyspark Sql,Pyspark Dataframes,如何将以下基于oracle的sql查询写入等效的pyspark sql,因为这是由于在spark.sql(*query)下嵌套而不受支持的 有没有办法也使用pyspark数据帧来编写 SELECT TABLE1.COL1 FROM TABLE1 WHERE COL2 = ( SELECT MAX(COL2) FROM TABLE1 WHERE TABLE1.COL3 = TABLE2.COL3 OR TABLE1.COL4 = TABLE2.COL4 ) 表1有

如何将以下基于oracle的sql查询写入等效的pyspark sql,因为这是由于在spark.sql(*query)下嵌套而不受支持的 有没有办法也使用pyspark数据帧来编写

SELECT TABLE1.COL1 
FROM TABLE1 
WHERE COL2 = (
    SELECT MAX(COL2) 
    FROM TABLE1 
    WHERE TABLE1.COL3 = TABLE2.COL3 OR TABLE1.COL4 = TABLE2.COL4
)
表1有列
COL1、COL2、COL3、COL4

表2有列
COL3、COL4

如果使用JDBC驱动程序,可以使用以下语法:

  sql_request = "(select TABLE1.COL1 FROM TABLE1 WHERE COL2 = (SELECT MAX(COL2) FROM TABLE1 WHERE TABLE1.COL3 = TABLE2.COL3 OR TABLE1.COL4 = TABLE2.COL4))"

  df_request = spark.read.jdbc(url=url,table=sql_request,properties=db_properties)
希望这能有所帮助

你可以试试这个

from pyspark.sql.functions import max

table1.select(table1.COL1)\
  .where(table1.COL2 == table2.select(max(table2.COL2).alias('MAX_COL2'))\
      .where((table1.COL3 == table2.COL3) | (table1.COL4 == table2.COL4)).collect().head().MAX_COL2).show()

希望这能有所帮助。

使用pyspark sql或pyspark dataframe有什么方法吗?也许我可以建议这些链接:或者或者开始??