大数据(8k)结构化数据处理SparkSQL

大数据课程K21——Spark的SparkSQL基础语法 val emp=sc.parallelize(List((1,100,"张财务"),(2,100,"李会计"),(3,300,"王艳发"))).toDF("id","did","name"){"name":"陈晨","address":{"city":"西安","street":"南二环甲字1号"}}{"name":"娜娜","address":{"city":"西安","street":"南二环甲字2号"}}orderBy/sort($"列1" , $"列2".desc) 按两列排序。 阅读详情

0、环境准备

依赖

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>3.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>3.0.2</version>
</dependency>

代码壳

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{SparkSession, DataFrame, Dataset, Row}

object Hello {
  def main(args: Array[String]): Unit = {
    //创建SparkContext对象
    val c0: SparkConf = new SparkConf().setAppName("a0").setMaster("local[*]")
    val sc: SparkContext = new SparkContext(c0)
    //创建SparkSession对象
    val c1: SparkConf = new SparkConf().setAppName("a1").setMaster("local[*]")
    val spark: SparkSession = SparkSession.builder().config(c1).getOrCreate()
    //隐式转换支持
    import spark.implicits._
  }
}

1、SparkSQL简介

  • SparkSQL:Spark的结构化数据处理模块
    无缝地整合了SQL+Spark编程
    主要内容:DataFrame和DataSet

1.1、DataFrame

  • 一种以RDD为基础的分布式数据集,类似于二维表格
  • 和RDD相比,多了元数据
val s: Seq[(String, Int)] = Seq(("a", 2), ("b", 3))
val df: DataFrame = s.toDF("name", "age")
df.show()
/*
+----+---+
|name|age|
+----+---+
|   a|  2|
|   b|  3|
+----+---+
*/
  • 源码是Dataset[Row](表明DataFrame是DataSet的特例)
val df: Dataset[Row] = Seq(("a", 2), ("b", 3)).toDF
/*
+---+---+
| _1| _2|
+---+---+
|  a|  2|
|  b|  3|
+---+---+
*/

1.2、DataSet

  • 比DataFrame更具体
  • 用样例类来定义DataSet中数据的结构信息,样例类中每个属性的名称直接映射到字段名称
import org.apache.spark.sql.{SparkSession, Dataset}

object Hello {
  def main(args: Array[String]): Unit = {
    // 创建SparkSession对象 并 设置隐式转换
    val spark: SparkSession = SparkSession.builder()
      .master("local[*]").appName("a").getOrCreate()
    import spark.implicits._
    // 创建DataSet
    val ds: Dataset[Hero] = Seq(Hero("剑圣", 9), Hero("先知", 7)).toDS
    ds.show()
  }
}

case class Hero(name: String, level: Int)

/*
+----+-----+
|name|level|
+----+-----+
|剑圣|    9|
|先知|    7|
+----+-----+
*/

2、RDD、DataFrame、DataSet 互转

  • 创建SparkSession对象后,写上import spark.implicits._来支持隐式转换
    注意:spark不是包名,而是SparkSession对象的名称,implicits是spark内部的对象

  1. 创建RDD
val r: RDD[(String, Int)] = sc.makeRDD(Seq(("a", 3), ("b", 6)))
  1. RDD转DataFrame
val df: DataFrame = r.toDF("name", "age")
  1. RDD转DataSet
case class Student(name: String, age: Int)
val ds: Dataset[Student] = r.map(t => Student(t._1, t._2)).toDS()
  1. DataFrame转DataSet
case class Student(name: String, age: Int)
val ds: Dataset[Student] = df.as[Student]
  1. DataFrame转RDD
val df2r:RDD[Row] = df.rdd
  1. DataSet转DataFrame
val ds2df: DataFrame = ds.toDF
  1. DataSet转RDD
val ds2r: RDD[Student] = ds.rdd

3、用户自定义聚合函数(UDAF)

  • UDAF全称:User Defined Aggregate Function
  • 俗称:多进一出

3.1、Aggregator

  • 自定义聚合器的基类,可在Dataset中使用
  • 功能:将组里所有元素归约(reduce)为一个值
  • 参数
    IN:用于聚合的输入类型
    BUF:用于归约(reduce)的中介值
    OUT:输出结果类型
  • 源码如下(本人稍微翻译),在org.apache.spark.sql.expressions
import org.apache.spark.sql.{Encoder, TypedColumn}
import org.apache.spark.sql.catalyst.encoders.encoderFor
import org.apache.spark.sql.catalyst.expressions.aggregate.{AggregateExpression, Complete}
import org.apache.spark.sql.execution.aggregate.TypedAggregateExpression

abstract class Aggregator[-IN, BUF, OUT] extends Serializable {
  // 用于聚合的初始值
  def zero: BUF

  //归约(合并2个值为1个值):不断输入数据(IN)来迭代中间值(BUF)
  def reduce(b: BUF, a: IN): BUF

  // 合并两个中间值
  def merge(b1: BUF, b2: BUF): BUF

  // 中间值转换成最终值
  def finish(reduction: BUF): OUT

  // Specifies the `Encoder` for the intermediate value type.
  def bufferEncoder: Encoder[BUF]

  // 指定 用于最终输出值类型 的 编码器
  def outputEncoder: Encoder[OUT]

  // 将该`Aggregator`作为`TypedColumn`返回,可用于`Dataset`操作
  def toColumn: TypedColumn[IN, OUT] = {
    implicit val bEncoder = bufferEncoder
    implicit val cEncoder = outputEncoder

    val expr =
      AggregateExpression(
        TypedAggregateExpression(this),
        Complete,
        isDistinct = false)

    new TypedColumn[IN, OUT](expr, encoderFor[OUT])
  }
}

3.2、代码示例(求平均值)

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}

object Hello {
  def main(args: Array[String]): Unit = {
    // 创建SparkContext对象
    val c0: SparkConf = new SparkConf().setAppName("a0").setMaster("local[*]")
    val sc: SparkContext = new SparkContext(c0)
    // 创建SparkSession对象
    val c1: SparkConf = new SparkConf().setAppName("a1").setMaster("local[*]")
    val spark: SparkSession = SparkSession.builder()
      .master("local[*]")
      .appName("c1")
      .config(c1)
      .getOrCreate()
    // 隐式转换支持
    import spark.implicits._

    // 创建RDD
    val r: RDD[(String, Int)] = sc.makeRDD(Seq(("a", 3), ("b", 6), ("c", 6)))
    val ds: Dataset[User] = r.map(t => User(t._1, t._2)).toDS()
    // 创建临时视图
    ds.createOrReplaceTempView("student")
    // 计算平均年龄(内置方法)
    spark.sql("SELECT AVG(age) FROM student").show

    // 计算平均年龄(自定义方法)
    // 创建自定义函数对象
    val myAvg = new A
    // 自定义函数对象转为查询列
    val col = myAvg.toColumn
    // 查询列
    ds.select(col).show()
  }
}

// 输入类型的样例类
case class User(name: String, age: Int)

// 缓存数据类型的样例类
case class AgeBuffer(var sum: Long, var num: Int)

// 用户自定义聚合函数
import org.apache.spark.sql.expressions.Aggregator
import org.apache.spark.sql.{Encoders, Encoder}
class A extends Aggregator[User, AgeBuffer, Double] {
  // 缓存数据的初始值
  override def zero: AgeBuffer = AgeBuffer(0L, 0)
  // 分区内数据聚合
  override def reduce(b: AgeBuffer, a: User): AgeBuffer = {
    b.sum += a.age
    b.num += 1
    b
  }
  // 分区间数据合并
  override def merge(b1: AgeBuffer, b2: AgeBuffer): AgeBuffer = {
    b1.sum += b2.sum
    b1.num += b2.num
    b1
  }
  // 最终结果
  override def finish(reduction: AgeBuffer): Double = {
    reduction.sum / reduction.num.toDouble
  }
  // 中间值编码器,用于序列化
  override def bufferEncoder: Encoder[AgeBuffer] = {
    Encoders.product  // 自定义类的固定写法
  }
  // 输出值解码器,用于序列化
  override def outputEncoder: Encoder[Double] = {
    Encoders.scalaDouble
  }
}

4、数据读写

可以Xshell开2个窗口来玩
读数据:spark.read.format("类型").load("路径")
写数据:df.writer.format("类型").save("路径")

// 创建DataFrame
val df0 = sc.makeRDD(Seq(("a", 3), ("b", 6)), 2).toDF("name", "age")
// 数据保存
df0.write.json("b.json")
// 数据读取
val df1 = spark.read.json("b.json")
df1.show()

5、视图的使用

createTempView:创建临时视图

// 创建DataFrame
val s = Seq(("BM", "物理", 8), ("DK", "物理", 9), ("DH", "物理", 7), ("MK", "物理", 8),
  ("BM", "化学", 6), ("DK", "化学", 5), ("DH", "化学", 3), ("MK", "化学", 4))
val df = sc.makeRDD(s).toDF("name", "course", "score")
/* 需求:各科成绩前两名 */
// 创建临时视图0
df.createTempView("scores")
// 创建临时视图1
spark.sql(
  """
    |SELECT
    |    *,
    |    RANK() OVER(PARTITION BY course ORDER BY score DESC) AS r
    |FROM scores;
    |""".stripMargin).createTempView("temp1")
// 创建临时视图2(可以用视图1的表名)
spark.sql("SELECT * FROM temp1 WHERE r<3").createTempView("temp2")
// 打印
spark.sql("SELECT * FROM temp2").show()

6、连接已有的HIVE

  1. 拷贝MySQL驱动到Spark
cp $HIVE_HOME/lib/mysql-connector-java-5.1.27-bin.jar $SPARK_HOME/jars/

  1. 在Spark创建hive-site.xml,内容从HIVE的hive-site.xml那里拷贝过来
vim $SPARK_HOME/conf/hive-site.xml
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>
  1. 测试
spark-sql --master yarn
show databases;
flickr8k text数据集 flicrk8k 数据集。 用于image caption等相关数据的处理 立即下载

相关推荐

实战篇(一):从零构建领域知识图谱——基于Protege的本体建模与知识表示

本文详细介绍了如何从零构建领域知识图谱,重点讲解了基于Protege的本体建模与知识表示方法。通过游戏和电影领域的实战案例,展示了类层次结构设计、属性关系定义、推理验证等关键步骤,帮助读者掌握知识图谱构建的核心技术。

weixin_42613501的博客 482

大数据定时处理流程(结构化数据)

大数据定时处理流程(结构化数据) 一、使用kattle工具或sqoop工具把数据导入hdfs 1、Kattle工具配置 复制hadoop服务中hdfs-site.xml hive-site.xml yarn-site.xml文件,并放入Kattle的C:\Users\Administrator\Desktop\pdi-ce-8.2.0.0-342\pdi-ce-8.2.0.0-34...

yeyiboy的博客 1279

【项目实战】基于STM32单片机的智能小车设计(有代码)

【1】背景意义 近些年随着国民生活水平的提升,以小车为载体的轮式机器人进入了我们的生活,尤其是在一些布线复杂困难的安全生活区和需要监控的施工作业场合都必须依赖轮式机器人的视频监控技术。因此,基于嵌入式技术的无线通信视频监控轮式机器人应运而生。由于它们与人类工作相比具有成本低廉、安全稳定的优点,目前已经在许多危险作业以及工业场合得到了广泛应用而且轮式机器人不需要像人那样采取过多的保护措施,因此轮式机...

ShawnWang1994的博客 13万+

SparkSQL实战之Youtube数据集

使用Youtube数据集进行SparkSQL实战演练

_朝和 1万+

ANSYS_APDL实战入门——从零开始掌握模态分析

本文为ANSYS APDL模态分析实战入门指南,通过一个悬臂梁案例,手把手教你从零开始掌握APDL命令流。内容涵盖从模型创建、材料定义、网格划分到边界条件设置、求解及后处理结果查看的全流程,帮助工程师快速上手结构动力学分析,避免共振风险。

egg99的博客 1132

STM32 BLDC无刷电机霍尔信号捕获与换相控制实战解析

本文深入解析了STM32如何实现BLDC无刷电机的霍尔信号捕获与换相控制。详细阐述了硬件接口配置、定时器霍尔传感器模式的使用、抗干扰的滤波器与软件容错设计,以及中断服务与换相逻辑的实战代码。重点解决了信号抖动、换相不准等常见问题,旨在帮助开发者构建稳定可靠的电机驱动基础。

weixin_29193259的博客 370

3年前毕业做Java开发的同学,现在30K了...

随着大数据时代的到来,有很多Java程序员想要转行大数据。而大数据技术中大多数平台使用的都是Java语言!因此,对于大数据技术的学习来说,Java程序员...

JAVA葵花宝典 414

YOLOv8改进有效系列目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

Hello,各位读者们好,本专栏自开设两个月以来已经更新改进教程120+余篇其中包含C2f、主干、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新,订阅本专栏以后你不仅可以收获跟专栏的阅读权限,同时可以进Qq群,里面包含集成我所有创新的YOLO最新目录,和我本人录制的视频讲解教程,如果你想要在YOLOv8系列收获一篇论文,我相信订阅本专栏后你一定会有所收获~YOLOv8改进有效系列目录。

Snu77的博客 18万+

从0到精通大数据:北京气象站可视化分析系统让你轻松掌握Hadoop+Spark核心技术

从0到精通大数据:北京气象站可视化分析系统让你轻松掌握Hadoop+Spark核心技术

biyesheji88的博客 945

工业相机,大恒,面振相机8脚电源线和I/O触发接口线,颜色和接法说明和触发软件设定

上图: 说明一下,工业相机有TTL逻辑电平触发,也有光耦触发等。 这里一般我们用电路板驱动,就用GPIO触发模式, 这里,准备了两个GPIO触发模式,为LINE2,LINE3都可以选择,然后有一个GPIO_GND 如果,你只有一个触发接口,那么如图,选两个就好了。 实际接法如图。 ...

山云的专栏 1万+

告别调参难!YOLO超参数优化指南(网格搜索+贝叶斯优化实战)

YOLO超参数优化的本质,不是“试遍所有参数”,而是“用工具化方法,在场景约束内找到最优平衡”——网格搜索稳、贝叶斯优化快,两者结合(先粗搜再精调)是工业场景的最优解。先定范围:基于工业场景(小目标/边缘设备/多类别)缩小参数搜索范围,避免无效探索。先调核心:优先优化数据增强、学习率、输入尺寸,这些参数对精度影响最大。工具赋能:用网格搜索+贝叶斯优化替代人工试错,再用TensorBoard监控,让调参“有据可依”。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 699

Spark SQL数据处理与数据分析(二)

spark 电影数据分析,多个问题,层层递进。

qq_44743835的博客 851

【数字IC设计】芯片设计中的RDC

在芯片设计中,RDC是的缩写,类似于CDC(clock domain crossing),由于现在SOC芯片是有很多ECUs组成,为了使整个系统能够快速从复位中恢复, 用户希望SOC里面每个ECU模块都可以有自己独立的异步复位信号,这样可以在出问题的时候只复位有错误逻辑的模块,而使其它模块保持正常工作。

qq_40268672的博客 2189

菜鸟进阶大数据第二天(主要是大数据的概述)

大数据: 自己的定义:在短时间内快速产生大量多种多样的有价值的信息 而为了解决大数据数据量过大的问题,所以产生了垂直扩展和横向扩展 。 垂直扩展是在一个服务器上分多个块 横向扩展是增加多个廉价的服务器 根据谷歌的三大论文所以产生了 1:GFS--------HDFS分布式文件系统(分布式的存储) 2:MapReduce-------分布式的处理 3:BigData-------------HBa...

doubimen的博客 1475

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大数据处理引擎Spark与Flink对比分析

大数据技术正飞速地发展着,催生出一代又一代快速便捷的大数据处理引擎,无论是Hadoop、Storm,还是后来的Spark、Flink。然而,毕竟没有哪一个框架可以完全支持所有的应用场景,也就说明不可能有任何一个框架可以完全取代另一个。我们将从几个项出发着重对比Spark与Flink这两个大数据处理引擎,探讨其两者的区别。     一、Spark与Flink几个主要项目的对比与分析   1.性...

sofuzi的博客 2011

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大数据处理引擎Spark与Flink对比分析!

大数据技术正飞速地发展着,催生出一代又一代快速便捷的大数据处理引擎,无论是Hadoop、Storm,还是后来的Spark、Flink。然而,毕竟没有哪一个框架可以完全支持所有的应用场景,也就说明不可能有任何一个框架可以完全取代另一个。今天,大圣众包威客平台(www.dashengzb.cn)将从几个项出发着重对比Spark与Flink这两个大数据处理引擎,探讨其两者的区别。  一、Spark与Fl...

木东的博客 4万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大数据自学——Spark

Spark自学之路 Spark基础——思维导图 #1.1Spark是什么 Apache Spark 是一个快速的,多用途的计算系统,相对于Hadoop MapReduce将中间结果保存在磁盘中,Spark使用了内存保存中间结果,能在数据尚未写入硬盘时在内存中进行运算。 Spark只是一个计算框架,不像Hadoop一样包含了分布式文件系统和完备的调度系统,若使用 Spark,需要搭载其它的文件系统和更成熟的调度系统。 #为什么会有Spark Spark 产生之前,已经存在非常成熟的计算系

Jocab_jl的博客 364

大数据学习之spark,一篇文章让你学会spark

大数据学习之spark,一篇文章让你学会spark

kmt-wsq的博客 1594

Spark

1.spark安装 (1)上传,解压 (2)进入conf目录并重命名并修改spark-env.sh.template文件 cd conf/ mv spark-env.sh.template spark-env.sh vi spark-env.sh 在该配置文件中添加如下配置 export JAVA_HOME=/usr/local/jdk1.8.0_152 export SPAR...

李sir的博客 450

Scala 和 Spark 大数据分析(九)

Python 是最受欢迎的通用编程语言之一,具有许多令人兴奋的特性,可用于数据处理和机器学习任务。为了从 Python 中使用 Spark,最初开发了 PySpark 作为 Python 到 Apache Spark 的轻量级前端,并使用 Spark 的分布式计算引擎。在本章中,我们将讨论使用 Python IDE(如 PyCharm)从 Python 中使用 Spark 的一些技术方面。许多数据科学家使用 Python,因为它具有丰富的数值库,具有统计、机器学习或优化的重点。

龙哥盟 1525

BigData – Join中竟然也有谓词下推!?

本文由 网易云 发布。 在之前的文章中简要介绍了Join在大数据领域中的使用背景以及常用的几种算法-broadcast hash join 、shuffle hash join以及 sort merge join等,对每一种算法的核心应用场景也做了相关介绍,这里再重点说明一番:大表与小表进行join会使用broadcast hash join,一旦小表稍微大点不再适合广播分发就会选择sh...

weixin_30871293的博客 191

Spark SQL与Hive On MapReduce速度比较

我们都知道Spark比Hadoop的MR计算速度更快。到底快多少呢?我一直比较疑惑,会有官网说的那么夸张吗。 今天就拿基于Spark的Spark SQL和基于MR的Hive比较一下,因为Spark SQL也兼容了HiveQL,我们就可以通过运行相同的HiveQL语句,比较直观的看出到底快多少了。 Spark SQL只要在编译的时候引入Hive支持,就可以支持Hive表访问,UDF,Ser...

光于前裕于后的博客 8008

Spark学习-入门介绍

简单的介绍一下Spark这款软件...

迷思 550

Pyspark基础

Spark Spark是一个框架,可以采用并行处理的方式高速应对海量数据,是一种健壮的机制 底层采用RDD(弹性分布式数据集),在执行处理期间,数据结构具有重建任意时点数据流的能力 RDD会使用最后一个时点的数据流创建一个新的RDD,出现错误也拥有重构的能力 分布式框架,基于主节点和工作结点的设置来运行,代码写在Spark驱动程序上,然后共享到实际留存数据的各个工作结点,他们将实际执行代码 Spark Core Spark Core 是 Spark 最基础的组成部分,使得驱动并行和分布式数据处理的内存

K_Programmer的博客 299

Spark精华问答 | spark的组件构成有哪些?

戳蓝字“优快云云计算”关注我们哦!Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoo...

优快云业界要闻 940

大数据分析-第十二章 Spark与数据分析

第十二章 Spark与数据分析

SpriCoder的博客 2819
上一篇: 大数据(8h)Spark页面单跳转化率
下一篇: 大数据(8f)RDD分组求均值
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值