如何使用pyspark从DB2中读取SQL?

时间:2018-08-21 15:43:58

标签: sql pyspark db2

我想使用带有pySpark的SQL语句进行连接并从DB2中读取信息。我在互联网上找到的唯一代码会读取整个表格,如下所示:

user = <username>
password = <password>
jdbcURL = "jdbc:db2://xx.xx.xxx.xxx:50000/Database" 
prop = {"user":user, "password":password, "driver":"com.ibm.db2.jcc.DB2Driver",  "sslConnection":"false"} 
table = <schema.table>
df = sqlContext.read.jdbc(url=jdbcURL,table=table,properties=prop) 
df.count()

我想使用

这样的SQL语句进行阅读
 'select * from table limit 100'

能请你帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以像下面在Pyspark中那样从任何JDBC来源中进行阅读

df = sqlContext.read.format('jdbc').option('url', '{}:{}/{}'.format(domain, port, dbname)).option('driver', 'com.mysql.jdbc.Driver').option('dbtable', '(select * from `{}`) as `{}`'.format(table, table)).option('user', username).option('password', password).load()

希望这会有所帮助

答案 1 :(得分:1)

根据@ User12345的回复,操作方法是

df = (sqlContext.read.format('jdbc') .option('url', 
    'jdbc:db2://xx.xx.xxx.xxx:50000/myDatabase') .option('driver', 
    'com.ibm.db2.jcc.DB2Driver') .option('dbtable', "(SELECT * FROM mySchema.myTable 
     limit 100) as t") .option('user', user).option('password', password).load()) 
df.count()