【发布时间】:2017-03-30 09:51:10
【问题描述】:
我在 spark env 中运行以下代码::
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.sql.SQLContext
import sqlContext.implicits._
import java.util.Properties
val conf = new SparkConf().setAppName("test").setMaster("local").set("spark.driver.allowMultipleContexts", "true");
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val df = sqlContext.read.format("jdbc").option("url","jdbc:sqlserver://server_IP:port").option("databaseName","DB_name").option("driver","com.microsoft.sqlserver.jdbc.SQLServerDriver").option("dbtable","tbl").option("user","uid").option("password","pwd").load()
val df2 = df.sqlContext.sql("SELECT col1,col2 FROM tbl LIMIT 5")
exit()
当我尝试执行上述代码时,我收到错误为“org.apache.spark.sql.AnalysisException:找不到表:tbl;”,但是,如果我删除 df2 并执行代码,我可以成功看到表tbl的内容。有什么做错了吗?我使用的是 spark 1.6.1,所以我检查了文档,通过 sqlcontext 触发 sql 查询的语法由我正确放置“https://spark.apache.org/docs/1.6.0/sql-programming-guide.html”,请参阅“以编程方式运行 SQL 查询”主题。
以下是完整跟踪错误的唯一跟踪::
conf: org.apache.spark.SparkConf = org.apache.spark.SparkConf@5eea8854
sc: org.apache.spark.SparkContext = org.apache.spark.SparkContext@7790a6fb
sqlContext: org.apache.spark.sql.SQLContext = org.apache.spark.sql.SQLContext@a9f4621
df: org.apache.spark.sql.DataFrame = [col1: int, col2: string, col3: string, col4: string, col5: string, col6: string, col7: string, col8: string, col9: timestamp, col10: timestamp, col11: string, col12: string]
org.apache.spark.sql.AnalysisException: Table not found: tbl;
【问题讨论】:
标签: sql-server scala apache-spark apache-spark-sql