derby的另一个示例可能已经启动了数据库/home/cloudera/metastore\u db

jm81lzqq  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(317)

我正在尝试使用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>

没有其他Hive或Spark会话在后台运行。我看到了不同的问题,只有一个例外。所以读一次,如果你仍然认为它是一个副本,你可以标记它。
谁能告诉我怎么修吗。

hjzp0vay

hjzp0vay1#

在spark 2.0.2中 spark.sparkContext.textFile 通常用于读取文本文件。
sparksql的scala接口支持将包含case类的rdd自动转换为Dataframe。case类定义了表的模式。case类的参数名使用反射读取并成为列名。case类也可以嵌套或包含复杂类型,如seq或数组。这个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文档了解更多信息,并检查其他opton以及。

相关问题