在 Apache Spark 2.0.0 中从外部数据库获取特定查询结果
使用 PySpark 在 Apache Spark 2.0.0 中处理外部数据库时,用户可能希望从特定查询中获取数据,而不是获取整个表。这可以增强性能并减少数据传输。
问题:
在以下 PySpark 代码中,从名为“schema.tablename”的数据库表加载 df DataFrame 。我们如何修改代码以从自定义查询的结果集中获取数据?
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()
答案:
获取自定义查询的结果集查询,将查询作为 Spark DataFrameReader 选项中的“dbtable”参数提供。查询必须用括号括起来,并为临时表名称起别名。
... .option("dbtable", "(SELECT foo, bar FROM schema.tablename) AS tmp") ...
通过将子查询作为“dbtable”参数传递,Spark 将执行查询并将结果数据加载到 DataFrame 中。这允许用户从外部数据库检索特定数据,而无需获取整个表的开销。
以上是如何使用 PySpark 的 JDBC 从外部数据库获取特定查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!