pra*_*ash 1 oracle hadoop scala apache-spark
我试图使用 Spark 数据源 API 从 Oracle 数据库加载数据。
由于我需要通过查询加载数据,因此我使用了下面的查询,该查询是我从一些在线示例中整理出来的:
Map<String, String> options = new HashMap<>();
options.put("driver", MYSQL_DRIVER);
options.put("user", MYSQL_USERNAME);
options.put("password", MYSQL_PWD);
options.put("url", MYSQL_CONNECTION_URL);
options.put("dbtable", "(select emp_no, emp_id from employees) as employees_data");
options.put("lowerBound", "10001");
options.put("upperBound", "499999");
options.put("numPartitions", "10");
DataFrame jdbcDF = sqlContext.load("jdbc", options);
Run Code Online (Sandbox Code Playgroud)
这会出现异常:
线程“main”中出现异常 java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束
我怀疑我们不能为 Oracle 查询提供“asEmployees_data”,那么我做错了什么?
我怀疑我们不能为 Oracle 查询提供“asEmployees_data”
您可能会怀疑,但在 Oracle 中不能使用AS表别名。您可以为列别名,它是可选的,但不允许为表别名。您可以在语法图中看到这一点。
假设 Spark 不介意别名本身,您可以删除AS:
options.put("dbtable", "(select emp_no, emp_id from employees) employees_data");
Run Code Online (Sandbox Code Playgroud)