如何解决从整个架构Scala中读取Spark
我想创建一个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()
我可以使用其他方法将所需的查询作为ResultSet加载,但这似乎很麻烦,因为我随后需要将其转换为Dataframe。任何帮助将不胜感激。
欢呼
解决方法
您无需将整个架构加载到spark中即可。
您可以使用query
属性在数据库上查询并以数据框的形式获取结果。
val jdbcDF = spark.read.format("jdbc")
.option("url",jdbcUrl)
.option("query","select c1,c2 from t1")
.load()
Ref:https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html
注意::Spark会将此查询推送到您的数据库,即您的数据库将处理该查询,而Spark只会获取结果。请注意,如果这是您的实时产品数据库:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。