【问题标题】:spark-sql Table or view not found errorspark-sql 表或视图未找到错误
【发布时间】:2020-07-09 17:59:42
【问题描述】:

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

如果有人能指出一些关于 Spark-sql (Spark-2.1.1) 的好材料,那也很棒。我打算使用 spark 来实现 ETL,连接到 MySQL 和其他数据源。

线程“主”org.apache.spark.sql.AnalysisException 中的异常:找不到表或视图:myschema.mytable;第 1 行第 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();

【问题讨论】:

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


    【解决方案1】:

    这是因为在 Spark SQL 上下文中默认情况下,Spark 不会从连接的任何模式中注册任何表。您必须自己注册:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-25
      • 1970-01-01
      • 2019-06-09
      • 2016-04-16
      • 2020-03-13
      • 1970-01-01
      • 2012-04-29
      • 2013-01-17
      • 2016-06-21
      相关资源
      最近更新 更多