0

스파크 프로그램 (버전 2.0)이 하이브에 연결되어 데이터베이스 목록, 테이블 목록을 인쇄하려고 시도하고 결국 새 하이브 테이블을 만듭니다 ('mytable ') 데이터베이스'testdata '.스파크 프로그램이 하이브 데이터베이스 또는 테이블 목록을 인쇄하지 않습니다

데이터베이스 목록을 인쇄하는 대신 df.show는 하이브에있는 모든 databsed avaialbe를 인쇄 할 때 기본 데이터베이스 이름을 인쇄합니다.

또한 새로운 테이블이 인쇄되고있을 때 데이터베이스가 이미 하이브에있는 데이터베이스가 존재하지 않는다는 메시지가 인쇄됩니다.

다음은 인쇄 할 내용입니다.

누군가 내 프로그램을 수정하는 데 도움을 줄 수 있습니까?

+------------+ 
|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"); 

    } 

} 

답변

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

당신은 추가나요 SparkSession.enableHiveSupport()?

관련 문제