spark-sql表或视图未找到错误

时间:2017-06-09 14:36:18

标签: apache-spark apache-spark-sql spark-dataframe

我尝试使用spark-sql&运行基本的java程序JDBC。我遇到了以下错误。不知道这里有什么问题。我读过的大部分材料都没有谈到解决这个问题需要做些什么。

如果有人能指出我在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();

1 个答案:

答案 0 :(得分:5)

这是因为Spark没有在Spark SQL Context中默认注册来自连接的任何模式中的任何表。您必须自己注册:

jdbcDF2.createOrReplaceTempView("mytable");
spark.sql("select count(*) from mytable");

您的jdbcDF2在MySQL的myschema.mytable中有一个来源,并会在某些操作中加载此表中的数据。

请记住,MySQL表与Spark表或视图不同。您告诉Spark从MySQL读取数据,但您必须在当前Spark SQL Context或Spark Session中将此DataFrame或Dataset注册为表或视图