use*_*977 4 apache-spark apache-spark-sql spark-dataframe
我正在尝试使用spark-sql和JDBC运行一个基本的java程序.我遇到了以下错误.不知道这里有什么问题.我读过的大部分材料都不讨论解决这个问题需要做些什么.
如果有人能指出我在Spark-sql(Spark-2.1.1)上阅读的一些好材料,那也很棒.我打算用spark来实现ETL,连接到MySQL和其他数据源.
线程"main"中的异常org.apache.spark.sql.AnalysisException:找不到表或视图:myschema.mytable; 第1行pos 21;
String MYSQL_CONNECTION_URL = "jdbc:mysql://localhost:3306/myschema";
String MYSQL_USERNAME = "root";
String MYSQL_PWD = "root";
Properties connectionProperties = new Properties();
connectionProperties.put("user", MYSQL_USERNAME);
connectionProperties.put("password", MYSQL_PWD);
Dataset<Row> jdbcDF2 = spark.read()
.jdbc(MYSQL_CONNECTION_URL, "myschema.mytable", connectionProperties);
spark.sql("SELECT COUNT(*) FROM myschema.mytable").show();
Run Code Online (Sandbox Code Playgroud)
这是因为Spark没有在Spark SQL Context中默认注册任何来自连接的模式中的表.您必须自己注册:
jdbcDF2.createOrReplaceTempView("mytable");
spark.sql("select count(*) from mytable");
Run Code Online (Sandbox Code Playgroud)
你的jdbcDF2有一个myschema.mytable来自MySQL 的源代码,它会在某个动作上从这个表中加载数据.
请记住,MySQL表与Spark表或视图不同.您告诉Spark从MySQL读取数据,但您必须在当前Spark SQL Context或Spark Session中将此DataFrame或Dataset注册为表或视图
| 归档时间: |
|
| 查看次数: |
11531 次 |
| 最近记录: |