spark从整个schema scala读取

gv8xihay  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(547)

我想创建一个spark对象,它可以读取整个模式,而不是该模式中的一个表。这是因为我想执行一个连接多个表的特定查询(我不想单独读取每个表,并使用spark手动重新创建查询,因为查询既长又复杂)。我希望它能像这样工作:

val Schema_DF = spark.read
    .format("jdbc")
    .option("url", "jdbc://example.com")
    .option("schema", "SCHEMA_NAME")
    .option("user", "username")
    .option("password", "pass")
    .load()

我可以使用不同的方法将我想要的查询作为结果集加载,但这似乎有些冗长,因为我需要将其转换为Dataframe。任何帮助都将不胜感激。
干杯

3z6pesqy

3z6pesqy1#

您不需要将整个模式加载到spark中就可以做到这一点。
您可以使用 query 财产。

val jdbcDF = spark.read.format("jdbc")
.option("url", jdbcUrl)
.option("query", "select c1, c2 from t1")
.load()

裁判:https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html
注意:spark会将此查询推送到您的数据库,即您的数据库会处理查询,spark只会获取结果。如果是你的live prod数据库,请小心:)

相关问题