【问题标题】:In Apache Spark 2.0.0, is it possible to fetch a query from an external database (rather than grab the whole table)?在 Apache Spark 2.0.0 中,是否可以从外部数据库获取查询(而不是获取整个表)?
【发布时间】:2016-12-08 08:08:51
【问题描述】:

使用 pyspark:

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”。

【问题讨论】:

    标签: mysql jdbc apache-spark pyspark


    【解决方案1】:

    Same as in 1.x 您可以将有效的子查询作为dbtable 参数传递,例如:

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

    【讨论】:

    • 至少在Scala(不确定Python/R)中,您可以提供spark.read.jdbc(url, s"($sql) ql", properties),其中sqlString,其中包含您的实际SQL 查询 [Spark 2.2.0]
    • 当我尝试使用自定义 sql 时出现空指针异常,但表名工作正常 :( 这是使用 pyspark2,带有 teradata jdbc
    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    相关资源
    最近更新 更多