Spark程序不是打印Hive数据库或表列表



我有Spark Program(版本2.0),该程序将连接到Hive,并试图打印数据库列表,表列表,最后它将创建一个新的Hive Table('MyTable')在数据库" TestData"中。

,而不是打印数据库列表,而是在打印默认数据库名称,我希望在Hive上打印所有数据库。

另外,当新表正在打印时,正在打印消息,该消息是数据库不可用的,因为数据库已经存在于Hive中。

这是正在打印的。

有人可以帮助修复我的程序吗?

+------------+
|databaseName|
+------------+
|     default|
+------------+
+---------+-----------+
|tableName|isTemporary|
+---------+-----------+
+---------+-----------+

import java.io.Serializable;
//$example off:programmatic_schema$
import org.apache.spark.sql.AnalysisException;
//$example on:create_df$
//$example on:run_sql$
//$example on:programmatic_schema$
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
//$example on:init_session$
import org.apache.spark.sql.SparkSession;
public class SparkLoad {
  public static void main(String[] args) throws AnalysisException { 
    SparkSession spark = SparkSession
            .builder()
            .master("local") ///local 
      .appName("Java Spark SQL basic example")
      .getOrCreate();
    abcd(spark);
    spark.stop(); 
  }
  private static void abcd(SparkSession spark) {
        Dataset<Row> df = spark.sql("SHOW DATABASES");
        df.show(); //this should print the database list.
        Dataset<Row> dff = spark.sql("SHOW TABLES");
        dff.show(); //this should print all table list.
        spark.sql("create table testdata.mytable (text1 varchar(64), text2 varchar(64), text3 varchar(64), "
                + "link string, text4 varchar(64),text5 varchar(64),text6 varchar(64),text7 varchar(64),text8 varchar(250),"
                + "text9 varchar(250),text10 varchar(250),text11 varchar(250),text12 varchar(64),text13 varchar(64),text14 varchar(64),"
                + "text15 varchar(64),text16 varchar(64),text17 varchar(64),text18 varchar(250),text19 varchar(64),text20 varchar(64),"
                + "text21 varchar(64),text22 varchar(64),text23 varchar(64),text24 varchar(64),text25 varchar(64),text26 varchar(64),"
                + "text27 varchar(64),text28 varchar(64),text29 varchar(64),text30 varchar(64),text31 varchar(64),text32 varchar(64))"
                + " row format delimited fields terminated by '~' STORED AS TEXTFILE");
  }
}

尝试将hive-site.xml复制到spark conf目录。以下链接可能会有所帮助。

https://community.cloudera.com/t5/advanced-analytics-apache-spark/how-to-to-access-the-hive-thive-tables-from-spark-shell/td-pd-p/36609

SparkSession spark = SparkSession
  .builder()
  .appName("Java Spark Hive Example")
  .config("spark.sql.warehouse.dir", warehouseLocation)
  .enableHiveSupport()
  .getOrCreate();

您是否添加了SparkSession.EnableHiveSupport()?

相关内容

  • 没有找到相关文章

最新更新