当前位置:  开发笔记 > 编程语言 > 正文

Spark SQL - 使用SQL语句而不是表名来使用JDBC加载数据

如何解决《SparkSQL-使用SQL语句而不是表名来使用JDBC加载数据》经验,为你挑选了1个好方法。

我想我错过了什么,但无法弄清楚是什么.我想使用特定的sql语句使用SQLContext和JDBC加载数据

select top 1000 text from table1 with (nolock)
where threadid in (
  select distinct id from table2 with (nolock)
  where flag=2 and date >= '1/1/2015' and  userid in (1, 2, 3)
)

我应该使用哪种SQLContext方法?我看到的例子总是指定表名和下边距和上边距.

提前致谢.



1> zero323..:

您应该将有效的子查询作为dbtable参数传递.例如在Scala中:

val query = """(SELECT TOP 1000 
  -- and the rest of your query
  -- ...
) AS tmp  -- alias is mandatory*"""   

val url: String = ??? 

val jdbcDF = sqlContext.read.format("jdbc")
  .options(Map("url" -> url, "dbtable" -> query))
  .load()

*Hive语言手册子查询:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SubQueries

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有