Apache spark 如何在使用ApacheSpark连接到Presto时解决SQL异常不支持的JAVA_对象类型?

Apache spark 如何在使用ApacheSpark连接到Presto时解决SQL异常不支持的JAVA_对象类型?,apache-spark,jdbc,presto,spark-shell,Apache Spark,Jdbc,Presto,Spark Shell,我对ApacheSpark非常陌生,正在尝试从ApacheSpark连接到Presto。下面是我的连接字符串,它给出了错误 val jdbcDF = spark.read.format("jdbc").options(Map("url" -> "jdbc:presto://host:port/hive?user=username&SSL=true&SSLTrustStorePath=/path/certificatefile", "driver" -> "com.fa

我对ApacheSpark非常陌生,正在尝试从ApacheSpark连接到Presto。下面是我的连接字符串,它给出了错误

val jdbcDF = spark.read.format("jdbc").options(Map("url" -> "jdbc:presto://host:port/hive?user=username&SSL=true&SSLTrustStorePath=/path/certificatefile", "driver" -> "com.facebook.presto.jdbc.PrestoDriver", "dbtable" -> "tablename", "fetchSize" ->  "10000", "partitionColumn" -> "columnname", "lowerBound" -> "1988", "upperBound" -> "2016", "numPartitions" -> "28")).load()
我首先在spark/sbin中启动了start-master.sh。我还尝试在spark shell中设置jar和驱动程序类路径,如下所示:

./spark-shell  --driver-class-path com.facebook.presto.jdbc.PrestoDriver --jars /path/jar/file

仍然出现以下错误:

java.sql.SQLException: Unsupported type JAVA_OBJECT
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$getCatalystType(JdbcUtils.scala:251)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$8.apply(JdbcUtils.scala:316)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$8.apply(JdbcUtils.scala:316)
  at scala.Option.getOrElse(Option.scala:121)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.getSchema(JdbcUtils.scala:315)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:63)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation$.getSchema(JDBCRelation.scala:210)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:35)
  at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318)
  at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167)


谁能帮我一下吗?谢谢

您的表是否使用了数组或映射之类的复杂类型?Presto JDBC中的这类类型公开为JAVA_对象(列表或映射),Spark似乎不支持这一点。一般来说,JDBC规范中对复杂类型的支持没有很好的定义。为什么不使用Spark SQL?@Ashish这就是我想要使用的。sparksql。但在此之前,我必须连接到Presto并注册临时视图。您也可以在Spark中创建临时视图。在单个流程中同时使用Spark和Presto可能会导致一些维护开销。