Python PySpark jdbc谓词错误:Py4JError:调用o108.jdbc时出错
我试图在我的方法中使用谓词: 但是,我遇到了以下错误:Python PySpark jdbc谓词错误:Py4JError:调用o108.jdbc时出错,python,apache-spark,apache-spark-sql,pyspark,pyspark-sql,Python,Apache Spark,Apache Spark Sql,Pyspark,Pyspark Sql,我试图在我的方法中使用谓词: 但是,我遇到了以下错误: --------------------------------------------------------------------------- Py4JError Traceback (most recent call last) ... Py4JError: An error occurred while calling o108.jdbc. Trace: py4j
---------------------------------------------------------------------------
Py4JError Traceback (most recent call last)
...
Py4JError: An error occurred while calling o108.jdbc. Trace:
py4j.Py4JException: Method jdbc([class java.lang.String, class java.lang.String, class [Ljava.lang.Object;, class java.util.Properties]) does not exist
如何向jdbc方法调用添加谓词?这里至少有两个问题。其中一个看起来像PySpark bug,据我所知,它已经在当前主程序中解决了 另一个问题是您使用的条件。它应该是简单的
'BRANCH\u code=5'
而不是'wherebranch\u code=5'
最后,如果只使用一个谓词,则将其作为子查询传递会更有意义,如下所示:
df = sqlContext.read.jdbc(
url = url,
table = "(SELECT * FROM GOSALES.BRANCH WHERE BRANCH_CODE=5) AS tmp")
带有谓词的JDBC查询
为每个谓词创建一个单独的JDBC分区,因此很难进行调优。更不用说你必须记住可能的重复
df = sqlContext.read.jdbc(
url = url,
table = "(SELECT * FROM GOSALES.BRANCH WHERE BRANCH_CODE=5) AS tmp")