当前位置: 首页 > 工具软件 > SqlContext > 使用案例 >

spark中SQLContext的使用

魏翰
2023-12-01

SQLContext的使用

Spark1.x中Spark SQL的入口点:SQLContext
下面是摘自官网的介绍

The entry point into all functionality in Spark SQL is the SQLContext class, 
or one of its descendants. To create a basic SQLContext, all you need is a SparkContext.
val sc: SparkContext // An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

// this is used to implicitly convert an RDD to a DataFrame.
import sqlContext.implicits._

下面我们来在IDEA中构建一个SQLContext的示例

  • 我们首先构建一个maven工程,勾上create from archetype框,选中****:scala-archetype-simple,具体如图示
  • 下一步填上GroupId,ArtifactId,Version等
  • 指定maven仓库的安装目录:看图
    当maven项目构建好后,删除main下面的自动为我们构建的.App程序,以及test下的的单元测试类,在依赖中有单元测试相关的依赖,可以删除。
    下面开始写Spark程序,补充一下,在写代码之前我们的scala环境是需要安装好的,安装过程十分简单,我的版本是2.11.12,由于本机scala版本不能低于maven中指定的版本,请各位务必注意一下

下一步我的name为SQLContext(随意),kind选择Object,代码如下所示,代码是为了处理一份json数据,展现文件的相关的内容。在生产环境中,我们的数据大多在服务器上,这里为了方便,我们在本地准备一份数据方便测试,路径在我D盘的根目录下,文件名为people.json

package com.zgw.spark

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext

/**
  * SQLContext的使用
  *
  */
object SQLContestApp {
  def main(args: Array[String]): Unit = {
val path = args(0)
//1.创建相应的Context
val sparkConf = new SparkConf()
sparkConf.setAppName("SQLContestApp")  //设置应用程序的名字
val sc =  new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)

//进行相关的处理,(处理json文件)
val people = sqlContext.read.format("json").load(path)   //传递文件格式和路径

people.printSchema()//展示文件内容
people.show()

//关闭资源
sc.stop()

  }

}

我们通过设置参数我们的测试数据传入到IDEA

在VM options中添加配置初始堆和最大堆的大小:运行

文档结构打印出来了
我们使用maven package对程序进行打包并传至linux通过脚本执行

spark-submit \
	--name SQLContextApp \
	--class Sparksql.SQLContextApp \
	--master local[2] \
/home/hadoop/sql-1.0.jar \
/home/hadoop/data/people.json
  1. –name 指定程序名
  2. –class指定包名.程序名
  3. –master local[2]代表的是spark以本地模式两线程方式启动
  4. /home/hadoop/sql-1.0.jar \代表jar所在路径
  5. /home/hadoop/data/people.json代表测试数据所在路径

可以看到程序也是执行成功的

参考:https://spark.apache.org/docs/1.6.1/sql-programming-guide.html#starting-point-sqlcontext

 类似资料: