2016-08-02 52 views
1

使用pyspark:在Apache Spark 2.0.0中,是否可以从外部数据库获取查询(而不是抓取整个表)?

from pyspark.sql import SparkSession 

spark = SparkSession\ 
    .builder\ 
    .appName("spark play")\ 
    .getOrCreate()  

df = spark.read\ 
    .format("jdbc")\ 
    .option("url", "jdbc:mysql://localhost:port")\ 
    .option("dbtable", "schema.tablename")\ 
    .option("user", "username")\ 
    .option("password", "password")\ 
    .load() 

而不是取“schema.tablename”,我更愿意抢查询结果集的。

回答

8

相同1.x中,你可以通过有效的子查询作为参数dbtable例如:

... 
.option("dbtable", "(SELECT foo, bar FROM schema.tablename) AS tmp") 
... 
+0

至少在'Scala'(不知道的'Python' /'R'),你可以给' spark.read.jdbc(url,s“($ sql)ql”,properties)'其中'sql'是一个包含您实际的'SQL' *查询*的字符串* ['Spark 2.2.0'] –

相关问题