我正在尝试使用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会话在后台运行。我看到了不同的问题,只有一个例外。所以读一次,如果你仍然认为它是一个副本,你可以标记它。
谁能告诉我怎么修吗。
1条答案
按热度按时间hjzp0vay1#
在spark 2.0.2中
spark.sparkContext.textFile
通常用于读取文本文件。sparksql的scala接口支持将包含case类的rdd自动转换为Dataframe。case类定义了表的模式。case类的参数名使用反射读取并成为列名。case类也可以嵌套或包含复杂类型,如seq或数组。这个rdd可以隐式地转换为Dataframe,然后注册为表。表可以在后续的sql语句中使用。
示例代码:
请参阅spark文档了解更多信息,并检查其他opton以及。