Derby的另一个实例可能已经启动了数据库/ home / cloudera / metastore_db

时间:2017-07-03 14:38:41

标签: scala apache-spark hive spark-dataframe

我正在尝试使用Spark将普通文本文件加载到配置单元表中。我使用Spark版本2.0.2。我已经在Spark版本中成功完成了它:1.6.0并且我试图在版本2x中做同样的事情 我执行了以下步骤:

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

直到现在都没有问题。 但是当我尝试将文件加载到Spark中时:

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.

core-site.xml中的默认属性:

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

背景上没有其他蜂巢或火花会话在运行。 我看到了同样异常的不同问题。所以请阅读一次,如果您仍然认为它是重复的,您可以标记它。

有谁能告诉我如何解决它。

1 个答案:

答案 0 :(得分:0)

通常习惯Spark 2.0.2 spark.sparkContext.textFile 读一个文本文件。

Spark SQL的Scala接口支持自动将包含RDD的案例类转换为DataFrame。 case类定义表的模式。使用反射读取case类的参数名称,并成为列的名称。案例类也可以嵌套或包含复杂类型,如Seqs或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以获取更多相关信息,并查看其他选项。