2017-05-08 41 views
0

我試圖從案例類的列表中創建一個配置單元表。但它不允許指定數據庫名稱。下面的錯誤正在被拋出。使用火花從案例類列表中創建一個配置單元表

星火版本:1.6.2

Error: diagnostics: User class threw exception: org.apache.spark.sql.AnalysisException: Table not found: mytempTable; line 1 pos 58

請讓我知道地圖方法的輸出保存到一個蜂巢表枝條相同的結構情況下班級的方式。

注: recordArray列表被填充在地圖方法(在中的getElem()方法逸岸)給定輸入

object testing extends Serializable { 
      var recordArray=List[Record](); 
      def main(args:Array[String]) 
      { 
      val inputpath = args(0).toString(); 
      val outputpath=args(1).toString(); 


      val conf = new SparkConf().setAppName("jsonParsing") 
      val sc = new SparkContext(conf) 
      val sqlContext= new SQLContext(sc) 
      val hsc = new HiveContext(sc) 

      val input = sc.textFile(inputpath) 
      //val input=sc.textFile("file:///Users/Documents/Work/data/mydata.txt") 
     // input.collect().foreach(println) 
     val = input.map(data=>getElem(parse(data,false))) 
    val recordRDD = sc.parallelize(recordArray) 
// 
    val recordDF=sqlContext.createDataFrame(recordRDD) 
    recordDF.registerTempTable("mytempTable") 
    hsc.sql("create table dev_db.ingestion as select * from mytempTable") 
     } 

    case class Record(summary_key: String, key: String,array_name_position:Int,Parent_Level_1:String,Parent_level_2:String,Parent_Level_3:String,Parent_level_4:String,Parent_level_5:String, 
      param_name_position:Integer,Array_name:String,paramname:String,paramvalue:String) 
    } 

回答

0

你需要有/創建HiveContext

import org.apache.spark.sql.hive.HiveContext; 
HiveContext sqlContext = new org.apache.spark.sql.hive.HiveContext(sc.sc()); 

然後直接保存數據幀或選擇要作爲配置單表存儲的列

recordDF是數據幀

recordDF.write().mode("overwrite").saveAsTable("schemaName.tableName"); 

recordDF.select(recordDF.col("col1"),recordDF.col("col2"), recordDF.col("col3")) .write().mode("overwrite").saveAsTable("schemaName.tableName"); 

recordDF.write().mode(SaveMode.Overwrite).saveAsTable("dbName.tableName"); 

SaveModes是追加/忽略/覆蓋/ ErrorIfExists

我在這裏添加的定義HiveContext從火花文檔,

+0

我們正在使用spark 1.6.1並且當我遵循上述步驟拋出以下錯誤----> **診斷:用戶類引發異常:org.apache.spark.sql.AnalysisException:不允許爲臨時表指定數據庫名稱或其他限定符。如果表名中有點(。),請用反引號(')引用表名。 ** –

相關問題