Spark SQL 中的 Parquet 文件
Posted
技术标签:
【中文标题】Spark SQL 中的 Parquet 文件【英文标题】:Parquet file in Spark SQL 【发布时间】:2014-08-26 12:01:36 【问题描述】:我正在尝试通过 parquet 文件格式使用 Spark SQL。当我尝试基本示例时:
object parquet
case class Person(name: String, age: Int)
def main(args: Array[String])
val sparkConf = new SparkConf().setMaster("local").setAppName("HdfsWordCount")
val sc = new SparkContext(sparkConf)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
// createSchemaRDD is used to implicitly convert an RDD to a SchemaRDD.
import sqlContext.createSchemaRDD
val people = sc.textFile("C:/Users/pravesh.jain/Desktop/people/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt))
people.saveAsParquetFile("C:/Users/pravesh.jain/Desktop/people/people.parquet")
val parquetFile = sqlContext.parquetFile("C:/Users/pravesh.jain/Desktop/people/people.parquet")
我得到一个空指针异常:
线程“main”中的异常 java.lang.NullPointerException 在 org.apache.spark.parquet$.main(parquet.scala:16)
这是行 saveAsParquetFile。这里有什么问题?
【问题讨论】:
【参考方案1】:当我在 Windows 的 eclipse 中使用 Spark 时出现此错误。我在 spark-shell 上尝试了同样的方法,它工作正常。我猜 spark 可能不是 100% 兼容 windows。
【讨论】:
【参考方案2】:Spark 与 Windows 兼容。您可以在 Windows 的 spark-shell 会话中运行程序,也可以使用带有必要参数的 spark-submit 运行它,例如“-master”(同样,在 Windows 或其他操作系统中)。 如果没有正确设置 Spark 环境等,您不能只在 Eclispe 中将 Spark 程序作为普通 Java 程序运行。您的问题与 Windows 无关。
【讨论】:
以上是关于Spark SQL 中的 Parquet 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 spark sql 重命名 Parquet 文件中列名中的空格
如何使用 Spark SQL 在 Parquet 文件中选择嵌套数组和映射
Spark基础学习笔记25:Spark SQL数据源 - Parquet文件