<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.10</artifactId> <version>2.1.0</version> </dependency>
import java.io.Serializable; import java.util.Arrays; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SQLContext; import org.apache.spark.sql.SparkSession; public class SparkSqlTest { public static class Person implements Serializable { private static final long serialVersionUID = -6259413972682177507L; private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return name + ": " + age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("Test").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); SparkSession spark = SparkSession.builder().appName("Test").getOrCreate(); JavaRDD<String> input = sc.parallelize(Arrays.asList("abc,1", "test,2")); JavaRDD<Person> persons = input.map(s -> s.split(",")).map(s -> new Person(s[0], Integer.parseInt(s[1]))); //[abc: 1, test: 2] System.out.println(persons.collect()); Dataset<Row> df = spark.createDataFrame(persons, Person.class); /* +---+----+ |age|name| +---+----+ | 1| abc| | 2|test| +---+----+ */ df.show(); /* root |-- age: integer (nullable = false) |-- name: string (nullable = true) */ df.printSchema(); SQLContext sql = new SQLContext(spark); sql.registerDataFrameAsTable(df, "person"); /* +---+----+ |age|name| +---+----+ | 2|test| +---+----+ */ sql.sql("SELECT * FROM person WHERE age>1").show(); sc.close(); } }
相关推荐
在IntelliJ IDEA等集成开发环境中,可以创建Spark项目,导入Spark SQL相关的库,编写SparkSession实例来执行SQL查询或DataFrame/Dataset操作。 ### 3. SparkSQL解析 3.1 **新的起始点SparkSession** Spark 2.0...
本篇文章将深入探讨Spark SQL数据加载和保存的实例。 一、Spark SQL数据加载 数据加载主要是将外部数据源的数据转化为DataFrame,以便进行后续的分析和处理。DataFrameReader是Spark SQL用于读取数据的核心接口。...
这些方法都是Spark SQL API的一部分,它们使得数据处理变得简单且高效。 为了对外提供接口,我们可以在`SparkController`中创建RESTful API,调用`SparkService`中的方法处理数据,并将结果返回给客户端。使用`@...
这是最基本的转换操作,可以用于对数据进行简单的处理,如数据清洗、计算等。 2. **filter()**: 通过传入一个谓词函数,filter算子可以筛选出满足条件的元素,返回一个新的RDD。这个操作常用于数据预处理,例如删除...
接着,我们将创建一个简单的Spark Java程序,它执行一个基本的Word Count任务。这个任务会读取输入文本,计算每个单词出现的次数。 ```java import org.apache.spark.SparkConf; import org.apache.spark.api.java....
- **一个快速的例子**:给出一个简单的Spark Streaming应用示例,以便读者快速理解其工作原理。 - **基本概念**:介绍Spark Streaming的基本概念,包括离散流(Discretized Streams, DStreams)、输入DStreams以及...
1. Standalone模式(本地部署):这是Spark自带的最简单的部署方式。它非常适合用于快速搭建一个专用的Spark集群,而且可以很好地支持长时间运行的应用程序(0.8.1+版本起)。部署时,需要在conf/spark-env.sh文件中...
接着,深入探讨Spark SQL,它是Spark用于处理结构化数据的主要组件,能够方便地与Hive等传统SQL系统集成,进行高效的数据查询和分析。 此外,书中还会详细讲解Spark Streaming,这是Spark处理实时数据流的模块,它...
**Spark上的WordCount程序详解** ...通过这个简单的例子,我们可以深入理解Spark的工作原理,以及如何在Java环境中编写并执行Spark任务。在实际应用中,这些基本操作可以扩展到更复杂的分布式数据处理场景。
首先,Spark提供了一种简单的方式去访问不同的数据源,包括本地文件系统和Hadoop Distributed File System (HDFS)。在Spark Shell中,可以通过`textFile()`函数读取文件,例如读取本地文件"/home/hadoop/test.txt",...
总的来说,“基于Spark的地铁大数据客流分析系统”是一个全面展示大数据处理流程的实例,涵盖了数据科学、分布式计算和实时分析等多个关键领域,对于学习和理解Spark及其在现实问题中的应用具有很高的价值。...
它支持批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)和机器学习(MLlib)。Spark的工作原理是将数据加载到内存中,进行多轮迭代计算,从而显著提高处理速度。 ### Kafka基础知识 Kafka是由...
2. 创建一个SparkSession实例,这是Spark SQL的入口点。 3. 使用SparkSession的createDataFrame方法将RDD转换为DataFrame。这通常需要定义一个Row类,该类的属性对应于数据中要表示的字段。 4. 创建DataFrame后,...
Cloudwick Spark 代码库 该存储库是 Spark 生态系统各个组件(包括 Spark-Core、Spark-Streaming、... 最简单的方法是克隆存储库: git clone https://github.com/cloudwicklabs/spark_codebase.git 如何运行这些?
总的来说,Spark SQL 和 DataFrame 提供了强大的数据处理能力,而 SparkSession 作为核心接口,使得与数据源交互变得简单。理解并熟练掌握这些概念和操作,对于进行大规模数据处理和分析至关重要。在实际工作中,...
* GraphFrames继承了Spark SQL和DataFrame中的强力查询能力,可以使用简短的查询语言来处理图数据。 三、GraphFrames编程 * GraphFrame是GraphFrames API的核心抽象编程模型,是图的抽象,逻辑上可看作两部分:...
在大数据处理领域,Apache Spark作为一个快速、通用且可扩展的计算框架,被广泛...这个简单的Wordcount示例只是Spark功能的冰山一角,Spark还支持更复杂的操作,如图计算、机器学习等,能够满足各种大数据处理需求。
以一个简单的例子说明:假设大部分Key对应的数据量都是10条记录,而有个别Key对应的数据量达到了100万条记录。这意味着大部分Task只需处理10条记录,可以在短时间内完成;然而,个别Task需要处理100万条记录,执行...