Apache spark 为什么spark.jdbc中需要dbtable/query

Apache spark 为什么spark.jdbc中需要dbtable/query,apache-spark,jdbc,pyspark,Apache Spark,Jdbc,Pyspark,我是SPARK noob,我不清楚为什么JDBC选项中需要dbtable或query e、 g.将其与Presto JDBC驱动程序一起使用时,Presto驱动程序不喜欢url、驱动程序、数据库表和查询参数。其他驱动程序执行类似的验证(例如,用于Presto的CData驱动程序) 21/05/13 21:50:41信息共享状态:仓库路径为“文件:/Users/asifkazi/Downloads/Projects/pyspark/spark仓库”。 回溯(最近一次呼叫最后一次): 文件“/Use

我是SPARK noob,我不清楚为什么JDBC选项中需要
dbtable
query

e、 g.将其与Presto JDBC驱动程序一起使用时,Presto驱动程序不喜欢url、驱动程序、数据库表和查询参数。其他驱动程序执行类似的验证(例如,用于Presto的CData驱动程序)

21/05/13 21:50:41信息共享状态:仓库路径为“文件:/Users/asifkazi/Downloads/Projects/pyspark/spark仓库”。
回溯(最近一次呼叫最后一次):
文件“/Users/asifkazi/Downloads/Projects/pyspark/test_jdbc.py”,第32行,在
df=jdbcpoptions.load()
文件“/usr/local/ceral/apache spark/3.1.1/libexec/python/lib/pyspark.zip/pyspark/sql/readwriter.py”,第210行,已加载
文件“/usr/local/ceral/apache spark/3.1.1/libexec/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py”,第1304行,在__
文件“/usr/local/cillar/apache spark/3.1.1/libexec/python/lib/pyspark.zip/pyspark/sql/utils.py”,第111行,deco格式
文件“/usr/local/ceral/apache spark/3.1.1/libexec/python/lib/py4j-0.10.9-src.zip/py4j/protocol.py”,第326行,在get_return_值中
py4j.protocol.Py4JJavaError:调用o35.load时出错。
:java.sql.SQLException:无法识别的连接属性“driver”
位于com.facebook.presto.jdbc.PrestoDriverUri.validateConnectionProperties(PrestoDriverUri.java:353)
在com.facebook.presto.jdbc.PrestoDriverUri上(PrestoDriverUri.java:104)
在com.facebook.presto.jdbc.PrestoDriverUri上(PrestoDriverUri.java:94)
在com.facebook.presto.jdbc.PrestoDriver.connect上(PrestoDriver.java:87)
位于org.apache.spark.sql.execution.datasources.jdbc.connection.BasicConnectionProvider.getConnection(BasicConnectionProvider.scala:49)
在
为什么我不能简单地为spark创建一个JDBC连接,然后像在JDBC中那样独立运行查询? 有没有一种方法可以在不将信息作为jdbc选项的一部分传递的情况下完成查询

e、 g.将其与Presto JDBC驱动程序一起使用时,Presto驱动程序不喜欢url、驱动程序、数据库表和查询参数。其他驱动程序执行类似的验证(例如,用于Presto的CData驱动程序)

它应该接受这些选项,看看这个

为什么我不能简单地为spark创建一个JDBC连接,然后像在JDBC中那样独立运行查询?有没有一种方法可以在不将信息作为jdbc选项的一部分传递的情况下完成查询

在Spark上下文中(立即)运行实际查询之前,我不认为拥有JDBC连接有什么意义。
spark.read.jdbc
的主要目的是建立连接,然后与多个执行器并行加载数据,而不是“测试”连接

url = "jdbc:presto:Server=spill.asifkazi.cp.ahana.cloud;Port=443;"
jdbcDriver = "com.facebook.presto.jdbc.PrestoDriver" 
sqlQuery = "select * from customer limit 1"
jdbcOptions = spark.read.format("jdbc")
jdbcOptions.option("url",jdbcUrl)
jdbcOptions.option("user", user)
jdbcOptions.option("password", password)
jdbcOptions.option("query",sqlQuery)
df = jdbcOptions.load()
df.show()
21/05/13 21:50:41 INFO SharedState: Warehouse path is 'file:/Users/asifkazi/Downloads/Projects/pyspark/spark-warehouse'.
Traceback (most recent call last):
  File "/Users/asifkazi/Downloads/Projects/pyspark/test_jdbc.py", line 32, in <module>
    df = jdbcOptions.load()
  File "/usr/local/Cellar/apache-spark/3.1.1/libexec/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 210, in load
  File "/usr/local/Cellar/apache-spark/3.1.1/libexec/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1304, in __call__
  File "/usr/local/Cellar/apache-spark/3.1.1/libexec/python/lib/pyspark.zip/pyspark/sql/utils.py", line 111, in deco
  File "/usr/local/Cellar/apache-spark/3.1.1/libexec/python/lib/py4j-0.10.9-src.zip/py4j/protocol.py", line 326, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o35.load.
: java.sql.SQLException: Unrecognized connection property 'driver'
    at com.facebook.presto.jdbc.PrestoDriverUri.validateConnectionProperties(PrestoDriverUri.java:353)
    at com.facebook.presto.jdbc.PrestoDriverUri.<init>(PrestoDriverUri.java:104)
    at com.facebook.presto.jdbc.PrestoDriverUri.<init>(PrestoDriverUri.java:94)
    at com.facebook.presto.jdbc.PrestoDriver.connect(PrestoDriver.java:87)
    at org.apache.spark.sql.execution.datasources.jdbc.connection.BasicConnectionProvider.getConnection(BasicConnectionProvider.scala:49)
    at