SparkSQL(Spark

  • 时间:
  • 浏览:1

前面当我们都都 创建DataFrame时,读取的是HDFS中的txt类型数据,在SparkSQL中,它支持多种数据源,主要包括JSON、Parquet等。

1 采用反映机制进行Schema类型推导(RDD到DataFrame的转换)

SparkSQL支持RDD到DataFrame的自动转换,实现措施是通过Case类定义表的Schema,Spark会通过反射机制读取case class的参数名并将其配置成表的列名。



parquet文件目录形态如下图

加进公众微信号,还必须解更多最新技术资讯

2 利用守护系统进程动态指定Schema

在这种应用场景下,当我们都都 可能何必 能提前挑选对应列的个数,因而case class无法进行定义,此时还可不不能通过传入有一个多字符串来设置Schema信息。具体过程如下:

//读取parquet格式数据

val parquetFile = sqlContext.read.parquet(“/data/namesAndAges.parquet”)

//parquetFile注册成表

parquetFile.registerTempTable(“parquetPerson”)

val teenagers = sqlContext.sql(“SELECT name FROM parquetPerson WHERE age >= 13 AND age <= 19”)

teenagers.map(t => “Name: ” + t(0)).collect().foreach(println)