SparkSQL优化分析--saveAsTable

解决spark saveAsTable生成的parquet格式的表的问题 解决spark saveAsTable生成的parquet格式的表的问题 问题一:直接在命令行创建的parquet格式的表通过spark saveAsTable 无法写入 阅读详情

环境 spark2.4.8 on yarn(hadoop2.4.5)

优化后

package com.bl.bigdata.cdp.execservice.service.batch.schedule.common

import com.bl.bigdata.cdp.execservice._
import com.bl.bigdata.cdp.execservice.utils.business.TableUtils
import com.bl.bigdata.cdp.execservice.utils.third.{DateUtil, Slf4jLogger}
import org.apache.spark.sql.functions.rand
import org.apache.spark.sql.{SaveMode, SparkSession}

object StoreUserLabels extends Slf4jLogger {

  def main(args: Array[String]): Unit = {
    val sparkConf = getSparkConf()
    implicit val spark: SparkSession = createSparkSession(sparkConf)

    buildStoreLabel

    spark.stop()
  }

  private def buildStoreLabel()(implicit spark: SparkSession) = {
    import spark.{sql, table}
    import spark.implicits._

    val latestDate = DateUtil.getCurrentDate()

    sql(
      s"""
         |SELECT member_id id, label, store_id
         |FROM (
         |SELECT member_id member_id, tagdetailid2 label, storelabel2 store_id FROM userlibrary.cdp_purchase_1 WHERE cdate='$latestDate' AND tagstorelabel3 IS NOT NULL AND storelabel2 IS NOT NULL
         |UNION ALL
         |SELECT member_id member_id, tagdetailid2 label, storelabel2 store_id FROM userlibrary.cdp_purchase_2 WHERE cdate='$latestDate' AND tagstorelabel3 IS NOT NULL AND storelabel2 IS NOT NULL
         |UNION ALL
         |SELECT member_id member_id, tagdetailid2 label, storelabel2 store_id FROM userlibrary.cdp_purchase_3 WHERE cdate='$latestDate' AND tagstorelabel3 IS NOT NULL AND storelabel2 IS NOT NULL
         |UNION ALL
         |SELECT member_id member_id, tagdetailid2 label, storelabel2 store_id FROM userlibrary.cdp_population WHERE cdate='$latestDate' AND tagdetailid2 IS NOT NULL AND storelabel2 IS NOT NULL
         |UNION ALL
         |SELECT member_id id, tagdetailid2 label, 's50' store_id FROM userlibrary.cdp_ubt WHERE cdate='$latestDate'
         |) t
         |GROUP BY store_id, member_id, label
         |""".stripMargin).
      repartition($"store_id", $"id").
      createOrReplaceTempView("tv_store_user_label")

    sql(
      """
        |SELECT id, label, -1 value, store_id
        |FROM tv_store_user_label
        |""".stripMargin).
      groupBy("store_id", "id").
      pivot("label").
      max("value").repartition($"store_id", rand).
      createOrReplaceTempView("tv_user_labels")

    sql(
      """
        |SELECT member_id id, black_flag
        |FROM procdata.cdp_member_info
        |WHERE black_flag='1'
        |""".stripMargin).
      createOrReplaceTempView("tv_user_black_flag")

    sql(
      """
        |SELECT /*+ BROADCAST(b) */  IF(black_flag IS NULL,0, CAST(black_flag AS INT)) AS black_flag,  u.*
        |FROM tv_user_labels u
        |LEFT JOIN tv_user_black_flag b
        |ON u.id=b.id
        |""".stripMargin).
      createOrReplaceTempView("store_user_labels_black_flag")

    sql(s"DROP TABLE IF EXISTS test.store_user_labels_tmp")

    table("store_user_labels_black_flag").
      where("1=2").
      write.
      partitionBy("store_id").
      saveAsTable("test.store_user_labels_tmp")

    table("store_user_labels_black_flag").
      // coalesce(69).
      repartition(69, $"store_id", rand).
      write.
      mode(SaveMode.Overwrite).
      partitionBy("store_id").
      parquet("/user/hive/warehouse/test.db/store_user_labels_tmp")

    spark.sql("MSCK REPAIR TABLE test.store_user_labels_tmp")

    TableUtils.renameAndRetainPhysicsTable("test.store_user_labels_tmp", "test.store_user_labels")
  }
}

/*
export SPARK_HOME=/opt/spark-2.4.8-212

$SPARK_HOME/bin/spark-submit --master yarn --deploy-mode cluster \
--class com.bl.bigdata.cdp.execservice.service.batch.schedule.common.StoreUserLabels8 \
--name cdp_StoreUserLabels_wsw6 --executor-cores 6 --executor-memory 33g --driver-memory 26g --conf spark.driver.maxResultSize=25g \
--conf spark.sql.pivotMaxValues=2900 \
--conf spark.network.timeout=3600 --conf spark.executor.heartbeatInterval=10000 \
--conf spark.sql.shuffle.partitions=248 \
--conf spark.default.parallelism=248 \
--conf spark.dynamicAllocation.enabled=true --conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.minExecutors=3 --conf spark.dynamicAllocation.maxExecutors=16 \
--conf spark.dynamicAllocation.initialExecutors=9 \
--conf spark.shuffle.memoryFraction=0.4 \
~/sven/cdpsupport.jar

问题点:

1 shuffle时大量数据
2 数据倾斜严重

优化点:

1 增加并行执行数量
2 修改动态资源提交
3 增加shuffle聚合内存
4 saveAsTable功能优化
5 join操作改为left join操作,但这个left join实际是broadcast
6 合并操作减少stage
7 repartition 操作修改为coalesce
8 适当进行干预,尽量防止数据倾斜
9 减少shuffle聚合操作后数据溢写到磁盘

参考:

6) spark.default.parallelism
参数说明:该参数用于设置每个stage的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能。

参数调优建议:如果不设置这个参数, Spark自己根据底层HDFS的block数量来设置task的数量,默认是一个HDFS block对应一个task。Spark官网建议的设置原则是,设置该参数为num-executors * executor-cores的2~3倍较为合适,此时可以充分地利用Spark集群的资源。针对数据交换的场景,建议此参数设置为1-10。

7) spark.storage.memoryFraction
参数说明:该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6。也就是说,默认Executor 60%的内存,可以用来保存持久化的RDD数据。根据你选择的不同的持久化策略,如果内存不够时,可能数据就不会持久化,或者数据会写入磁盘。

参数调优建议:如果Spark作业中,有较多的RDD持久化操作,该参数的值可以适当提高一些,保证持久化的数据能够容纳在内存中。避免内存不够缓存所有的数据,导致数据只能写入磁盘中,降低了性能。但是如果Spark作业中的shuffle类操作比较多,而持久化操作比较少,那么这个参数的值适当降低一些比较合适。如果发现作业由于频繁的gc导致运行缓慢(通过spark web ui可以观察到作业的gc耗时),意味着task执行用户代码的内存不够用,那么同样建议调低这个参数的值。针对数据交换的场景,建议降低此参数值到0.2-0.4。

8) spark.shuffle.memoryFraction
参数说明:该参数用于设置shuffle过程中一个task拉取到上个stage的task的输出后,进行聚合操作时能够使用的Executor内存的比例,默认是0.2。也就是说,Executor默认只有20%的内存用来进行该操作。shuffle操作在进行聚合时,如果发现使用的内存超出了这个20%的限制,那么多余的数据就会溢写到磁盘文件中去,此时就会极大地降低性能。

参数调优建议:如果Spark作业中的RDD持久化操作较少,shuffle操作较多时,建议降低持久化操作的内存占比,提高shuffle操作的内存占比比例,避免shuffle过程中数据过多时内存不够用,必须溢写到磁盘上,降低了性能。如果发现作业由于频繁的gc导致运行缓慢,意味着task执行用户代码的内存不够用,那么同样建议调低这个参数的值。针对数据交换的场景,建议此值设置为0.1或以下。

一天入门大数据开发:Hadoop+Hive+SparkSQL单机环境搭建与全流程实战 面对海量数据处理需求,分布式存储与计算框架是构建现代数据基础设施的核心。其基本原理在于将数据分散存储在多台机器上,并通过并行计算框架高效处理,从而实现高吞吐、高容错的数据分析能力。这一技术价值在于,它使得企业能够以可扩展、低成本的方式处理PB级数据,将数据从成本中心转化为决策资产。典型应用场景包括用户行为日志分析、离线数据仓库构建和商业智能报表生成。本文聚焦于大数据开发的工程实践,通过搭建一个集成了Hadoop、Hive和SparkSQL的单机伪分布式环境,手把手演示如何将本地数据导入HDFS,并使用Hiv 阅读详情

相关推荐

从零搭建Hadoop+Hive+Spark伪分布式环境:大数据开发实战指南

大数据技术栈的核心在于解决海量数据的存储与计算问题。其基本原理是通过分布式系统架构,将数据分散存储在多台机器上,并利用并行计算框架进行处理,从而实现高效、可扩展的数据分析能力。这一技术价值在于能够处理传统数据库难以应对的PB级数据,为数据驱动决策提供支撑。典型的应用场景包括用户行为分析、日志处理和商业智能报表等。本文聚焦于Hadoop、Hive和SparkSQL的本地伪分布式环境搭建,通过手把手实战,详细讲解HDFS、YARN和MapReduce的配置与集成,并演示如何利用Hive进行数据仓库操作以及通过S

weixin_34414196的博客 325

Spark DataFrame中insertInto()与saveAsTable()区别及动态分区插入hive表使用设置

@Author : Spinach | GHB @Link : http://blog.youkuaiyun.com/bocai8058 文章目录前言insertInto()saveAsTable()动态分区参数设置动态分区代码实现 前言 在spark应用开发中,会经常需要将数据清洗后的结果,插入HIVE表中。而针对数据落表,官方提供了几种插入方式,具体有insertInto,saveAsTable,调用spark sql。下面我们一一讲解他们的区别。 insertInto() 保存DataFra

GSpinach的博客 1万+

spark saveAsTable 太慢

前面有个join, 可能是join的两边重复的key太多了。

开卷有益 1675

Spark - saveAsTable + rename = 坑

目录 一、背景 二、环境及测试场景 ①、环境 ②、测试场景 三、复现历程 ①、场景探索 ②、测试用例(写数据) 1. rename表(hive引擎) 2. 观察rename后表结构 3. 记录下rename后的目录状态 4. jar包 insertInto写入第二批数据 ③、测试用例(读数据) 1. hive引擎读新路径(location)的旧数据 2. spark引擎读旧路径(path)的新数据 四、隐患 ①、隐患:数据写入和查询混乱 ②、隐患:数据管理和治理困难 五、修正方案............

写虫师的博客 1580

深信服技术认证“SCCA-C”划重点:信服云托管云

该认证包括云数据中心基础、云计算基础、云计算关键技术、云计算交付和运维体系、云计算技术商业应用、信服云托管云、深信服超融合HCI、深信服桌面云aDesk、深信服分布式存储EDS、深信服应用交付AD。学习并获得SCCA-C认证后,可以具备深信服产品功能原理与实践,能够根据业务需求,协助完成云产品方案落地与实施;能够根据业务需求,完成深信服云产品的部署和管理的基本工作。为帮助大家更加系统化地学习云计算知识,高效通过云计算工程师认证,深信服特推出“SCCA-C认证备考秘笈”,共十期内容。

sangfor_edu的博客 613

完整IC设计流程解析&Makefile学习

本文介绍了decorder38项目的文件结构、自动化综合流程和Makefile使用方法。项目包含RTL到GDSII全流程文件,重点关注syn目录中的综合脚本。通过make dc命令运行综合流程,生成网表、约束和时序文件。关键报告如qor.rpt、area.rpt和min_vio.rpt用于分析综合质量、面积和时序。Makefile部分解释了其基本语法、IC设计中的典型结构,包括目标定义、命令执行和特殊声明,强调了其在自动化构建和依赖管理中的重要性。

m0_63352623的博客 855

Spark写入hive表时saveAsTable和insertInto的区别/Spark插入hive分区表的一些坑(原创)

Spark写入hive表时saveAsTable和insertInto的区别/Spark插入hive分区表的一些坑(原创) # 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会

huihuixia123的博客 8835

看不懂分子动力学模拟的结果?一文读懂RMSD曲线

随后,将每一帧结构与初始模板进行叠合,计算对应原子的平均偏移量,即RMSD。总之,掌握 RMSD 的解读方法,就等于抓住了评估分子动力学模拟成败与质量的“总开关”。①在模拟初始阶段,RMSD会从0迅速上升,这是蛋白质从静态晶体或模型结构释放到溶液环境中并逐渐适应的正常过程。②经过一段时间后,曲线不再系统性上升或下降,而是围绕一个平均值,小幅度地上下波动,形成一个稳定的“平台”。这种情况下,RMSD 在初始快速上升后,并未进入平台,而是持续甚至加速上升,始终未见收敛。🔍 如何解读不同趋势的RMSD曲线。

weixin_46587777的博客 4887

python使用spark sql查询impala_如何比较Hive,Spark,Impala和Presto?

Spark,Hive,Impala和Presto是基于SQL的引擎,Impala由Cloudera开发和交付。在选择这些数据库来管理数据库时,许多Hadoop用户会感到困惑。Presto是一个开放源代码的分布式SQL查询引擎,旨在运行甚至PB级的SQL查询,它是由Facebook人设计的。Spark SQL是一个分布式内存计算引擎,它的内存处理能力很高。Hive也由Apache作为查询引擎引入,这...

weixin_39783360的博客 304

Sentinel2 哨兵2数据下载方法(USGS)-史上最全讲解

本文讲述了从USGS官网下载Sentinel2的方法。主要包括USGS官网的注册和下载流程,以及选定研究区中所出现的问题、解决办法。

xiatiandexia123的博客 6万+

如何把Excel的数据导入python?

Python数据分析——excl导入数据的简单方法(xlrd) 本文的初衷是发现网上很多Excel导入Python都没有结合具体Excel文档进行讲解,所以这篇文档将会呈现一个简单快速的Excel+Python的入门方法。 开发环境 Prerequisites: 在开始用Python导入Excel之前,要配置好自己的开发环境,最好有IDE(terminal也可)+安装相应的数据分析包。 IDE :pycharm,vscode,etc 数据分析包:matplotlib,xlrd,numpy,etc 导入数

qq_40783513的博客 7万+

spark sql中createOrReplaceTempView,saveAsTable,spark.sql(Create table..)创建的表的区别

我们在spark sql中可能遇到createOrReplaceTempView,saveAsTable,spark.sql(Create table..)三种创建表的方式,那么这三种方式有什么区别吗?同时,我们也会遇到多张表进行join的sql,这些sql很难跑出结果,我们有什么办法能够较为轻松的跑出结果呢?

hongqiutiandi163的博客 9382

亚马逊广告接口 amazon advertising

亚马逊广告接口官方说明:https://advertising.amazon.com/API/docs/en-us/setting-up/account-setup 一:注册aws开发者账号 注册地址:https://developer.amazon.com 二:填写注册资料 三:进入控制台,生成安全配置文件 进入 Login with Amazon 菜单: 创建配置文件: 四:申请广告接入权限 申请地址:https://advertising.amazon.com/zh-cn/about-api

lzy66666的博客 4776

Spark:用saveAsTable保存为hive默认纯文本文件

spark中Dataset的的saveAsTable方法可以把数据持久化到hive中,其默认是用parquet格式保存数据文件的,若是想让其保存为其他格式,可以用format方法配置。 如若想保存的数据文件格式为hive默认的纯文本文件: df.write.mode(SaveMode.Append).format("hive").saveAsTabl...

weixin_33804990的博客 1004

AlertManager的使用(邮件和微信告警)

一、AlertManager概述 Prometheus 包含一个报警模块,就是我们的 AlertManager,Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重,降噪,分组等,是一款前卫的告警通知系统。 Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertman

weixin_45880055的博客 2万+

反光柱定位算法实战03:VEnus代码解析和纯反光柱定位中的可改进方向

本文深入解析了开源框架VEnus的反光柱定位与建图实现流程,包括强度提取、聚类、数据关联、位姿优化等核心模块。同时指出其三大局限:匹配质量脆弱性、单一传感器依赖和地图扩展逻辑缺失,并提出改进方向:融合里程计/IMU数据、引入图优化后端、建立动态地图维护机制。该分析为基于反光柱的定位系统优化提供了实用参考,有助于提升工业场景下的定位鲁棒性和精确性。

Studying…… 520

Spark落地到hive表时saveAsTable与insertInto的区别

SaveAsTable //Api的解释 Saves the content of the `DataFrame` as the specified table. * * In the case the table already exists, behavior of this function depends on the * save mode, specified by the `mod...

welcome to zdsg's csdn 5240

深度学习工具包 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")

spark 提供的几种落表HIVE方式 insertInto() saveAsTable()

1 insertInto() 保存DataFrame数据到指定hive表中,但要求满足以下两点: 指定的hive表是存在的; DataFrame的schema结构顺序与指定Hive表的schema结构顺序是一致的 保存DataFrame数据到指定hive表中。分两种情况:表已经存在和表不存在 2 saveAsTable() 如果表不存在,则会自动创建表结构。 如果表已经存在,则此函数的行为取决于由mode函数指定的保存模式(默认情况下抛出异常)。 a.mode=Overwrite时, .

m0_54603030的博客 3280

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Spark分区 partition 详解

一、Spark数据分区方式简要 在Spark中,RDD(Resilient Distributed Dataset)是其最基本的抽象数据集,其中每个RDD是由若干个Partition组成。在Job运行期间,参与运算的Partition数据分布在多台机器的内存当中。这里可将RDD看成一个非常大的数组,其中Partition是数组中的每个元素,并且这些元素分布在多台机器中。图一中,RDD1包含了5个Partition,RDD2包含了3个Partition,这些Partiti...

. 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spark如何正确的写hive分区表

经常听到有人讲:spark写hive 分区表时,原本想覆盖一个分区的数据,但因为错误的编码导致整个表的分区被覆盖。本文针对此问题进行测试。 1. 测试结论 需要指定如下参数:"spark.sql.sources.partitionOverwriteMode", "dynamic" "hive.exec.dynamic.partition.mode", "nonstrict" saveAsTable方法会导致全表覆盖写,需要用insert into,详情下面的源代码 insert.

penriver的博客 1万+

大数据量mysql数据分区(时间)导入hive,Spark,scala实现

大数据量mysql数据分区(时间)导入hive,Spark,scala实现

weixin_44947939的博客 2342

Spark saveAsTable写入表会提示表已存在的问题

使用以下方式写入表时,如果表不存在,但是表的hdfs目录下存在文件时会报错 df.write.mode("overwrite").partitionBy("pk_hour").saveAsTable("dw.test") 可以在Spark的参数中添加下面配置,以下仅仅是Spark2中生效: spark.sql.legacy.allowCreatingManagedTableUsingNonemp...

硅谷工具人 1248

sql语句中select……as的用法

as 可理解为:用作、当成,作为;一般是重命名列名或者表名。 例如有表table, 列 column_1,column_2 你可以写成 select column_1 as 列1,column_2 as 列2 from table as 表 上面的语句就可以解释为,选择 column_1 作为 列1,column_2 作为 列2 从 table 当成 表

foreverhuylee的专栏 16万+

SQL 从一个sql 语句结果中(作为AS一个表) 查询结果 ;按照count排序

1.sql 一条sql 语句查询结果中 查询数据; 2.sql 统计 按照某列 分类 并按照递减 排序 3.sql 某列 sql语句查询结果集合当中的 进行查找

风一样的男人 3755

mysql:sql as 复制表

create table database1.table1 like database2.table1;

ShellDawn的博客 1369

Spark 2.0系列之SparkSession详解

原文链接:How to use SparkSession in Apache Spark 2.0 作者:Jules Damji 译者:刘旭坤 责编:郭芮,关注大数据领域,寻求报道或投稿请发邮件guorui@youkuaiyun.com。另有优快云 Spark用户微信群,请添加微信guorui_1118并备注公司+实名+职位申请入群。 Spark2.0中引入了SparkSession...

imgxr的博客 5716
上一篇: 字符串和编码
下一篇: Spark 指定日志级别
大怀特
博客等级 码龄6年 5787粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

大怀特

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值