我正在尝试使用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>
背景上没有其他蜂巢或火花会话在运行。 我看到了同样异常的不同问题。所以请阅读一次,如果您仍然认为它是重复的,您可以标记它。
有谁能告诉我如何解决它。
答案 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以获取更多相关信息,并查看其他选项。