2017-07-03 263 views
0

我試圖使用Spark將正常文本文件加載到配置單元表中。我正在使用Spark版本2.0.2。我在星火版本成功做到了:1.6.0,我試圖做同樣的在2x 版本我執行以下步驟:Derby的另一個實例可能已經啓動了數據庫/ home/cloudera/metastore_db

import org.apache.spark.sql.SparkSession 
    val spark = SparkSession.builder().appName("SparkHiveLoad").master("local").enableHiveSupport().getOrCreate() 
    import spark.implicits._ 

是沒有問題的,直到如今。 但是,當我嘗試將文件加載到星火:

val partfile = spark.read.textFile("hdfs://quickstart.cloudera:8020/user/cloudera/partfile") 

我得到一個異常:

Caused by: org.apache.derby.iapi.error.StandardException: Another instance of Derby may have already booted the database /home/cloudera/metastore_db. 

核心-site.xml中的默認屬性:

<property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://quickstart.cloudera:8020</value> 
    </property> 

有沒有其他蜂巢或火花會議在後臺運行。 我看到了不同的問題,但有同樣的例外。所以只讀一次,如果你仍然認爲它是重複的,你可以標記它。

有誰能告訴我如何解決它。

+0

請提供完整的錯誤 –

+0

引起:org.apache.derby.iapi.error.StandardException:無法使用類加載器啓動數據庫'metastore_db'org.apache.spark.sql.hive.client.IsolatedClientLoader $$ anon $ 1 @ 6ba6ec73,詳情請參閱下一個例外。 ORG: 在org.apache.derby.iapi.error.StandardException.newException(來源不明) 在org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(來源不明) ... 144多個 所致。 apache.derby.iapi.error.StandardException:另一個Derby實例可能已經引導了數據庫/ home/cloudera/metastore_db。 – Sidhartha

+1

可能的重複[導致:ERROR XSDB6:另一個Derby實例可能已經引導數據庫](https://stackoverflow.com/questions/34465516/caused-by-error-xsdb6-another-instance-of-derby -may-have-already-booted-the-da) –

回答

0

Spark 2.0.2spark.sparkContext.textFile一般是用來讀取 的文本文件。

Spark SQL的Scala接口支持自動將包含大小寫類的RDD轉換爲DataFrame。 case類定義表的模式。使用反射讀取case類的參數名稱,併成爲列的名稱。案例類也可以嵌套或包含複雜類型,例如Seq或Arrays。此RDD可以隱式轉換爲DataFrame,然後將其註冊爲表格。表可以在隨後的SQL語句中使用。

示例代碼:

mport org.apache.spark.sql.catalyst.encoders.ExpressionEncoder 
import org.apache.spark.sql.Encoder 

// For implicit conversions from RDDs to DataFrames 
import spark.implicits._ 

// Create an RDD of Person objects from a text file, convert it to a Dataframe 
val peopleDF = spark.sparkContext 
    .textFile("examples/src/main/resources/people.txt") 
    .map(_.split(",")) 
    .map(attributes => Person(attributes(0), attributes(1).trim.toInt)) 
    .toDF() 
// Register the DataFrame as a temporary view 
peopleDF.createOrReplaceTempView("people") 

請參閱Spark Documentation有關它的更多信息,並檢查其他optons爲好。

+0

好的。我能夠使用這個 val partfile = spark.sparkContext.textFile(「hdfs:// quickstart:8020/user/cloudera/partfile」) 但是當我鍵入'val partfile = spark.read。並給了'標籤'我得到的選項:CSV,格式,JDBC,JSON,加載,選項,選項,獸醫,實木複合地板,架構,表,文本和textFile。 所以這意味着有一個選項權利? 也使用spark.sparkContext,你只需要一個'textFile'選項來讀取文件。但是你沒有選擇閱讀「json,parquet,ORC等文件」的選項。 – Sidhartha

+0

我還沒有用spark.read.textFile嘗試過。我會檢查它並相應地更新。 –

+0

Spark在構建庫中讀取json,parquet和ord文件。即對於json,你的代碼將是'val df = spark.read.json(「examples/src/main/resources/people.json」)' –

相關問題