我正在尝试使用以下命令通过jdbc从MariaDB4J中读取表:
Dataset<Row> jdbcDF = spark.read()
.format("jdbc")
.option("url", url)
.option("dbtable", String.format("SELECT userID FROM %s;", TableNAME))
.load();
我收到以下错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT userID FROM MYTABLE; WHERE 1=0' at line 1
我不确定WHERE来自哪里以及为什么我会收到此错误... 感谢
答案 0 :(得分:0)
提供给dbtable选项的第二个参数不正确。您应该使用使用模式限定的表名或使用带别名的有效SQL查询,而不是指定sql查询。
Dataset<Row> jdbcDF = spark.read()
.format("jdbc")
.option("url", url)
.option("dbtable", String.format("(SELECT userID FROM %s) as table_alias", tableNAME))
.load();
您的问题与this one类似,请原谅我quote myself:
您看到奇怪的查询WHERE 1 = 0的原因是Spark尝试推断数据框架的架构而不加载任何实际数据。保证此查询永远不会提供任何结果,但Spark可以使用查询结果的元数据来获取架构信息。