spark-note

import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.types._
import spark.implicits._
import org.apache.spark.sql.functions.udf

import org.apache.spark.sql._


object Run {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("test").setMaster("local")
val sc = new SparkContext(conf)
sc.setLogLevel("WARN")
val sqlContext = new SQLContext(sc)

/**
* id age
* 1 30
* 2 29
* 3 21
*/
case class Person(id: Int, age: Int)
val idAgeRDDPerson = sc.parallelize(Array(Person(1, 30), Person(2, 29), Person(3, 21)))

// 优点1
// idAge.filter(_.age > "") // 编译时报错, int不能跟String比

// 优点2
idAgeRDDPerson.filter(_.age > 25) // 直接操作一个个的person对象
}
}


val spark = SparkSession
.builder()
.appName("SparkSessionZipsExample")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate()


-------------------------------------
scala> val numDS = spark.range(5, 100, 5)
numDS: org.apache.spark.sql.Dataset[Long] = [id: bigint]

scala> numDS.orderBy(desc("id")).show(5)
+---+
| id|
+---+
| 95|
| 90|
| 85|
| 80|
| 75|
+---+
only showing top 5 rows

scala> numDS.describe().show()
+-------+------------------+
|summary| id|
+-------+------------------+
| count| 19|
| mean| 50.0|
| stddev|28.136571693556885|
| min| 5|
| max| 95|
+-------+------------------+
scala> val langPercentDF = spark.createDataFrame(List(("Scala", 35),
| ("Python", 30), ("R", 15), ("Java", 20)))
langPercentDF: org.apache.spark.sql.DataFrame = [_1: string, _2: int]

scala> val lpDF = langPercentDF.withColumnRenamed("_1", "language").withColumnRenamed("_2", "percent")
lpDF: org.apache.spark.sql.DataFrame = [language: string, percent: int]

scala> lpDF.orderBy(desc("percent")).show(false)
+--------+-------+
|language|percent|
+--------+-------+
|Scala |35 |


hadoop 状态查看地址:http://192.168.1.101:8088/
spark 状态查看地址:http://192.168.1.101:8082/
### Spark SQL 的功能与用途 #### 功能概述 Spark SQL 是 Apache Spark 中的一个模块,用于处理结构化数据。它的核心功能在于能够在 Spark 应用程序中执行 SQL 查询,并与其他 Spark 组件无缝集成[^1]。以下是 Spark SQL 提供的主要功能: - **SQL 支持**:允许用户通过标准 SQL 语法查询数据,这使得熟悉 SQL 的开发者可以轻松上手[^2]。 - **DataFrame 和 Dataset API**:除了原生的 RDD 接口外,Spark SQL 还引入了更高层次的抽象——DataFrame 和 Dataset,它们提供了优化的数据操作接口[^4]。 - **Hive 集成**:可以通过 `HiveContext` 或者启用 Hive 支持的方式访问现有的 Hive 数据仓库[^3]。 - **多种数据源支持**:支持从 JSON、Parquet、CSV 等文件格式加载数据,并能自动推断模式[^1]。 #### 主要用途 由于其强大的功能特性,Spark SQL 被广泛应用于以下几个领域: - **大数据分析**:适用于大规模数据集上的交互式查询和批量处理任务,提供高效的性能表现[^2]。 - **ETL 流程自动化**:利用 Spark SQL 对不同来源的数据进行抽取、转换和加载操作,简化 ETL 工作流程[^5]。 - **实时流计算扩展**:结合 Spark Streaming 使用时,可实现带有复杂事件处理逻辑的低延迟应用开发[^2]。 - **机器学习准备阶段**:作为 MLlib 的前置工具之一,在特征工程环节发挥重要作用,帮助完成数据清洗、聚合统计等工作[^2]。 ```scala // 示例代码展示如何创建 SparkSession 并运行基本 SQL 查询 import org.apache.spark.sql.SparkSession val spark = SparkSession.builder() .appName("Basic SQL Example") .getOrCreate() spark.read.json("/path/to/json/file").createOrReplaceTempView("people") val teenagers = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19") teenagers.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值