`
m635674608
  • 浏览: 5028488 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spark SQL 最简单例子

 
阅读更多
  <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();
    }

}

 

分享到:
评论

相关推荐

    spark SQL应用解析

    在IntelliJ IDEA等集成开发环境中,可以创建Spark项目,导入Spark SQL相关的库,编写SparkSession实例来执行SQL查询或DataFrame/Dataset操作。 ### 3. SparkSQL解析 3.1 **新的起始点SparkSession** Spark 2.0...

    Spark SQL数据加载和保存实例讲解

    本篇文章将深入探讨Spark SQL数据加载和保存的实例。 一、Spark SQL数据加载 数据加载主要是将外部数据源的数据转化为DataFrame,以便进行后续的分析和处理。DataFrameReader是Spark SQL用于读取数据的核心接口。...

    springboot与spark整合开发, 练习spark api

    这些方法都是Spark SQL API的一部分,它们使得数据处理变得简单且高效。 为了对外提供接口,我们可以在`SparkController`中创建RESTful API,调用`SparkService`中的方法处理数据,并将结果返回给客户端。使用`@...

    Spark算子实例maven版

    这是最基本的转换操作,可以用于对数据进行简单的处理,如数据清洗、计算等。 2. **filter()**: 通过传入一个谓词函数,filter算子可以筛选出满足条件的元素,返回一个新的RDD。这个操作常用于数据预处理,例如删除...

    java开发spark程序

    接着,我们将创建一个简单的Spark Java程序,它执行一个基本的Word Count任务。这个任务会读取输入文本,计算每个单词出现的次数。 ```java import org.apache.spark.SparkConf; import org.apache.spark.api.java....

    spark-programming-guide(Spark 编程指南)-高清文字版

    - **一个快速的例子**:给出一个简单的Spark Streaming应用示例,以便读者快速理解其工作原理。 - **基本概念**:介绍Spark Streaming的基本概念,包括离散流(Discretized Streams, DStreams)、输入DStreams以及...

    Patrick Wendell:Administering Spark

    1. Standalone模式(本地部署):这是Spark自带的最简单的部署方式。它非常适合用于快速搭建一个专用的Spark集群,而且可以很好地支持长时间运行的应用程序(0.8.1+版本起)。部署时,需要在conf/spark-env.sh文件中...

    大数据Spark企业级实战版

    接着,深入探讨Spark SQL,它是Spark用于处理结构化数据的主要组件,能够方便地与Hive等传统SQL系统集成,进行高效的数据查询和分析。 此外,书中还会详细讲解Spark Streaming,这是Spark处理实时数据流的模块,它...

    WordCount_Spark!_spark_wordcount_java_

    **Spark上的WordCount程序详解** ...通过这个简单的例子,我们可以深入理解Spark的工作原理,以及如何在Java环境中编写并执行Spark任务。在实际应用中,这些基本操作可以扩展到更复杂的分布式数据处理场景。

    大数据技术原理及应用课实验7 :Spark初级编程实践

    首先,Spark提供了一种简单的方式去访问不同的数据源,包括本地文件系统和Hadoop Distributed File System (HDFS)。在Spark Shell中,可以通过`textFile()`函数读取文件,例如读取本地文件"/home/hadoop/test.txt",...

    基于spark的地铁大数据客流分析系统.zip

    总的来说,“基于Spark的地铁大数据客流分析系统”是一个全面展示大数据处理流程的实例,涵盖了数据科学、分布式计算和实时分析等多个关键领域,对于学习和理解Spark及其在现实问题中的应用具有很高的价值。...

    简单的spark与kafuka示例

    它支持批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)和机器学习(MLlib)。Spark的工作原理是将数据加载到内存中,进行多轮迭代计算,从而显著提高处理速度。 ### Kafka基础知识 Kafka是由...

    spark: RDD与DataFrame之间的相互转换方法

    2. 创建一个SparkSession实例,这是Spark SQL的入口点。 3. 使用SparkSession的createDataFrame方法将RDD转换为DataFrame。这通常需要定义一个Row类,该类的属性对应于数据中要表示的字段。 4. 创建DataFrame后,...

    spark_codebase:带有基线单元测试的 Spark 核心、流、sql、mllib 示例和应用程序的集合

    Cloudwick Spark 代码库 该存储库是 Spark 生态系统各个组件(包括 Spark-Core、Spark-Streaming、... 最简单的方法是克隆存储库: git clone https://github.com/cloudwicklabs/spark_codebase.git 如何运行这些?

    3.dataframe使用1

    总的来说,Spark SQL 和 DataFrame 提供了强大的数据处理能力,而 SparkSession 作为核心接口,使得与数据源交互变得简单。理解并熟练掌握这些概念和操作,对于进行大规模数据处理和分析至关重要。在实际工作中,...

    Spark大数据技术与应用-第8章.pptx

    * GraphFrames继承了Spark SQL和DataFrame中的强力查询能力,可以使用简短的查询语言来处理图数据。 三、GraphFrames编程 * GraphFrame是GraphFrames API的核心抽象编程模型,是图的抽象,逻辑上可看作两部分:...

    Java实现Spark词配对Wordcount计数代码实现

    在大数据处理领域,Apache Spark作为一个快速、通用且可扩展的计算框架,被广泛...这个简单的Wordcount示例只是Spark功能的冰山一角,Spark还支持更复杂的操作,如图计算、机器学习等,能够满足各种大数据处理需求。

    Spark性能优化指南—高级篇

    以一个简单的例子说明:假设大部分Key对应的数据量都是10条记录,而有个别Key对应的数据量达到了100万条记录。这意味着大部分Task只需处理10条记录,可以在短时间内完成;然而,个别Task需要处理100万条记录,执行...

Global site tag (gtag.js) - Google Analytics