- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想使用 Spark 处理来自 JDBC 源的一些数据。但首先,我不想从 JDBC 读取原始表,而是想在 JDBC 端运行一些查询来过滤列和连接表,并将查询结果作为表加载到 Spark SQL 中。
以下加载原始 JDBC 表的语法适用于我:
df_table1 = sqlContext.read.format('jdbc').options(
url="jdbc:mysql://foo.com:3306",
dbtable="mydb.table1",
user="me",
password="******",
driver="com.mysql.jdbc.Driver" # mysql JDBC driver 5.1.41
).load()
df_table1.show() # succeeded
根据 Spark documentation (我使用的是 PySpark 1.6.3):
dbtable: The JDBC table that should be read. Note that anything that is valid in a FROM clause of a SQL query can be used. For example, instead of a full table you could also use a subquery in parentheses.
所以只是为了实验,我尝试了一些简单的事情:
df_table1 = sqlContext.read.format('jdbc').options(
url="jdbc:mysql://foo.com:3306",
dbtable="(SELECT * FROM mydb.table1) AS table1",
user="me",
password="******",
driver="com.mysql.jdbc.Driver"
).load() # failed
它抛出以下异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table1 WHERE 1=0' at line 1
我还尝试了其他一些语法变体(添加/删除括号、删除“as”子句、切换大小写等),但都没有成功。那么正确的语法是什么?在哪里可以找到更详细的语法文档?此外,错误消息中这个奇怪的“WHERE 1=0”是从哪里来的?谢谢!
最佳答案
要在 Spark SQL 中使用 sql 查询从 JDBC 源读取数据,您可以尝试这样的操作:
val df_table1 = sqlContext.read.format("jdbc").options(Map(
("url" -> "jdbc:postgresql://localhost:5432/mydb"),
("dbtable" -> "(select * from table1) as table1"),
("user" -> "me"),
("password" -> "******"),
("driver" -> "org.postgresql.Driver"))
).load()
我用 PostgreSQL 试过了。可以根据MySQL
修改。
关于mysql - 如何在 jdbc 数据源中使用 dbtable 选项的子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43174838/
标签: 属性: **headList** $scope.headList =[ {name:"运单号",code:"trackingNum",width:"100"}, {name:"件
我有一个产品表,我想根据我的产品表获取订购产品的总数 这是我的产品表 products +---------------+-------------------+ | product_id |
我想检查字段“number_field”中的记录值是否唯一,因此我在 number_field 中查找具有相同值的记录。我使用 Lookup 方法,因为我正在编辑记录: id := SomeTable
我在运行程序时遇到问题。我的代码太旧了,我不确定它是如何工作的。 Cannot resolve unit name 'DBTables' at line 20 Underclared indetifi
我想使用 Spark 处理来自 JDBC 源的一些数据。但首先,我不想从 JDBC 读取原始表,而是想在 JDBC 端运行一些查询来过滤列和连接表,并将查询结果作为表加载到 Spark SQL 中。
目前,我收到了一个普通的 DbTable Auth Adapter : protected function _getAuthAdapter($formData) { $dbAda
每天我都会在日志文件中看到这个错误: PHP Warning: Missing argument 2 for wpdb::prepare(), called in /home/xxxxxxxx/pub
我是一名优秀的程序员,十分优秀!