关于运行Spark教程exapmles的几个问题

时间:2016-10-20 03:57:36

标签: scala apache-spark

我目前正在学习Spark的一些教程。我下载了最新版本的spark 2.0.1。以下是我最近在spark-shell中运行的代码:

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.createDataFrame

case class Person(name: String, age: Int)
val people = sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0),p(1).trim.toInt)).toDF()

// people.saveAsParquetFile("people.parquet")
people.write.format("parquet").save("people.parquet")

val parquetFile = sqlContext.parquetFile("people.parquet")

//Parquet files can also be registered as tables and then used in SQL statements.
parquetFile.registerTempTable("parquetFile")
val teenagers = sqlContext.sql("SELECT name FROM parquetFile WHERE age >= 13 AND age <= 19")
teenagers.map(t => "Name: " + t(0)).collect().foreach(println)

首先让我保证,在我来到这里询问之前,我已经搜索了所有问题并且没有找到正确的结果,因为我之前因为类似的原因而经历过我的问题。我的问题是:

  1. 正在使用的import sqlContext.implicits._import spark.implicits._以及import sqlContext.createDataFrame之间有什么区别?
  2. 实际上我以前成功运行过该代码,但这次没有改变。我得到的错误信息太多了,让我展示一部分:

      

    引起:错误XJ040:无法启动数据库&#363; metastore_db&#39;使用类加载器org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@59fa5a39,有关详细信息,请参阅下一个异常。       at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)       at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source)       ... 144更多

    我猜这个错误发生在.toDF(),但不知道为什么;

  3. 最后一个问题是,我听说.saveAsParquetFile()已经不再使用了。那么我应该如何使用.write.format("parquet").save("xxx.parquet")编写一个镶木地板文件?

  4. 这些问题是我遇到的真正问题,而不是有效的解决方案。因此,如果您发现我可以在某个地方获得答案,请与我分享链接,不要在没有令人信服的理由的情况下投入我的问题。谢谢!

0 个答案:

没有答案