2016-08-02 11 views
1

Mit pyspark:In Apache Spark 2.0.0, ist es möglich, eine Abfrage von einer externen Datenbank abzurufen (anstatt die gesamte Tabelle zu greifen)?

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() 

Anstatt holen „schema.tabellenname“, würde ich es vorziehen, die Ergebnismenge einer Abfrage zu greifen.

Antwort

8

Gleiche wie in 1.x können Sie gültige Unterabfrage als dbtable Argument zum Beispiel passieren:

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

Mindestens in 'Scala' (nicht sicher von' Python'/'R'), können Sie geben' spark.read.jdbc (URL, s "($ sql) ql", Eigenschaften) 'wobei' sql' ein 'String' ist, der deine eigentliche' SQL' * Query * ['Spark 2.2.0'] enthält –