精华内容
下载资源
问答
  • 由于实习做的一个项目用 SparkStreaming 计算全量...得出的结论有:在 Driver 端定义的变量如果不广播,则在 Executor 端为 null,即使变量类型为分布式的 DataSettransform,foreachRDD 算子中的代码在 Driver 端运...

    由于实习做的一个项目用 SparkStreaming 计算全量实时更新的数据,产生了对任务运行过程中代码运行位置的困惑( Driver 端执行还是 Executor 端执行?)做了以下测试。

    得出的结论有:

    在 Driver 端定义的变量如果不广播,则在 Executor 端为 null,即使变量类型为分布式的 DataSet

    transform,foreachRDD 算子中的代码在 Driver 端运行,所以 Driver 端的变量对其是可以使用的,但是对于细化到 RDD 的算子中的运算如 map,foreachPartition,则是在 Executor 端运行

    在 Driver 端定义的变量若为 DataSet,则再使用 map 算子是在 Executor 端运行的

    object sqlWordCount {

    private var product_skuDataSet:Dataset[Row] = null

    private var kafkaParams :Map[String,Object] = null

    private val mysql_url = ""

    def getDimensionRDD(spark:SparkSession, url: String, table: String): Dataset[Row] = {

    // 打印在 driver

    System.err.println("get dimensionRDD")

    var rowRDD: Dataset[Row] = null

    val prop: util.Map[String, String] = new util.HashMap[String, String]

    prop.put("url", url)

    prop.put("dbtable", table)

    prop.put("driver", "com.mysql.jdbc.Driver")

    rowRDD = spark.read.format("jdbc").options(prop).load.coalesce(1)

    rowRDD

    }

    def main(args: Array[String]) {

    val sparkConf = new SparkConf().setAppName("SqlNetworkWordCount")

    if(args.length>0) sparkConf.setMaster("local[4]")

    val ssc = new StreamingContext(sparkConf, Seconds(5))

    kafkaParams = Map[String, Object](

    "bootstrap.servers" -> "kafka1:9092,kafka2:9092",

    "key.deserializer" -> classOf[StringDeserializer],

    "value.deserializer" -> classOf[StringDeserializer],

    "group.id" -> "want",

    "auto.offset.reset" -> "latest",

    "enable.auto.commit" -> (false: java.lang.Boolean)

    )

    val topics = Array("test")

    val lines = KafkaUtils.createDirectStream[String, String](

    ssc,

    PreferConsistent,

    Subscribe[String, String](topics, kafkaParams)

    )

    val words = lines.map(record => record.value).flatMap(_.split(" "))

    words.transform(rdd =>{

    val spark = SparkSessionSingleton.getInstance(rdd.sparkContext.getConf)

    if (product_skuDataSet == null ) {

    System.err.println("get product_sku from mysql")

    product_skuDataSet = getDimensionRDD(spark, mysql_url, "product_sku")

    }

    import spark.implicits._

    val wordsDataFrame = rdd.map(w =>{

    /**

    * 打印在 executor 端

    */

    System.err.println("execute map here:"+ Thread.currentThread().getName)

    /**

    * executor 无法获得变量的引用,即使这个变量是dataset

    * 报 NullPointException

    */

    // product_skuDataSet.createOrReplaceTempView("product_sku")

    Record(w)

    } ).toDF()

    product_skuDataSet.limit(100).coalesce(2).map(row => sku(row.getLong(0),row.getString(1)))

    .foreachPartition(iterator =>{

    while(iterator.hasNext){

    val sku = iterator.next()

    /**

    * 在 executor 端输出

    */

    System.err.println("run in:"+Thread.currentThread().getName)

    System.err.println(sku.id+": "+sku.sku_code)

    }

    })

    wordsDataFrame.createOrReplaceTempView("words")

    val wordCountsDataFrame = spark.sql("select word, count(*) as total from words group by word")

    /**

    * driver 端打印

    */

    wordCountsDataFrame.show()

    rdd

    }).foreachRDD(rdd =>{})

    ssc.start()

    ssc.awaitTermination()

    }

    }

    /** Case class for converting RDD to DataFrame */

    case class Record(word: String)

    case class sku(id:Long , sku_code:String)

    /** Lazily instantiated singleton instance of SparkSession */

    object SparkSessionSingleton {

    @transient

    private var instance: SparkSession = _

    def getInstance(sparkConf: SparkConf): SparkSession = {

    /**

    * driver 端执行

    */

    if (instance == null) {

    System.err.println("init sparkSession here")

    instance = SparkSession

    .builder

    .config(sparkConf)

    .getOrCreate()

    }

    instance

    }

    }

    展开全文
  • 1. python的代码写在哪里你有两种方式写python代码,他们针对不同的应用场景在python交互式解释器里写代码在编辑器里写代码在python交互式解释器里,你可以写简单的代码,尽管复杂的代码你也可以写,但不建议那样做...

    1. python的代码写在哪里

    你有两种方式写python代码,他们针对不同的应用场景在python交互式解释器里写代码

    在编辑器里写代码

    在python交互式解释器里,你可以写简单的代码,尽管复杂的代码你也可以写,但不建议那样做。我们写一些简单的代码,有时仅仅是为了验证一些想法,想立即知道是否可行,或者是在初学阶段,希望快速的验证自己所学习的知识,都可以在python交互式解释器里编写和执行代码。

    在编辑器里写代码,推荐使用pycharm,你喜欢其他的编辑器也可以自由选择,但本教程以pycharm为主。

    在编辑器里写代码,需要创建以.py结尾的文件,所写的代码都保存在文件中,每个文件都是一个模块。使用编辑器的好处在于编辑器都有代码提示功能,而且你写的代码都会保存下来,这些可都是你的财富。

    在《安装配置pycharm》教程里,文章的最后给出了新建python脚本以及执行脚本的方法。

    2. 如何执行python代码

    如果是在交互式解释器里写代码,代码是立即执行的,谈不上执行python代码,只有在编辑器里将代码保存在一个python脚本(以.py结尾的文件)中,才会有所谓的执行python代码这个说法,准确的用词应该是执行python脚本。

    2.1 mac电脑上执行python脚本

    以mac电脑为例,打开终端,使用vi命令新建一个名为hello.py的脚本,内容为print('hello world')

    然后在终端里执行命令 python hello.py

    2.2 windows电脑上执行python脚本

    新建hello.py

    在windows电脑上,在E盘下,新建一个txt文件,内容同样为print('hello world')

    将txt文件另存为hello.py

    打开cmd

    打开cmd后,输入e: 并回车,切换到E盘目录

    执行脚本

    执行命令 python hello.py

    展开全文
  • 1.JAVA代码运行模式:可以开发工具中运行,可以直接双击JAR文件运行,可以命令行运行,无论是哪种运行方式,都离不开JRE,即JAVA运行时环境。这也是JAVA与C++的区别,C++是编译成机器码CPU中运行。2.为什么...

    1.JAVA代码的运行模式:

    可以在开发工具中运行,可以直接双击JAR文件运行,可以在命令行运行,无论是哪种运行方式,都离不开JRE,即JAVA运行时环境。这也是JAVA与C++的区别,C++是编译成机器码在CPU中运行。

    2.为什么需要在虚拟机运行:

    JAVA是一门高级程序语言,语法复杂,抽象程度高,直接在硬件上运行复杂的程序不现实,所以运行前需要进行转换。设计一个虚拟机,并通过编译器将JAVA程序转换成该虚拟机可识别的指令序列,也成为JAVA字节码,在有虚拟机进行解释。

    虚拟机的另外一个好处就是,它带来了一个托管环境,这个托管环境能代替我们处理代码中冗长而容易出错的部分(内存管理、垃圾回收)。

    3.JAVA虚拟机如何运行字节码程序:

    HOTSPOT:

    1.首先需要将它编译而成的class文件加载到java虚拟机中。

    2.加载后的java类会被存放于方法区(Method Area)。

    3.实际运行时,虚拟机会执行方法区内的代码。

    4.每当调用进入一个JAVA方法,JAVA虚拟机都会在当前线程的JAVA方法栈中生成一个栈帧。

    5.退出时销毁栈帧。

    4.HOTSPOT中编译过程的两种方式:

    1.解释执行:无需等待编译。

    2.即时编译:实际运行速度更快。

    HOTSPOT内置多个及时编译器 C1,C2,GRAAL(jdk10)。C1 client编译器 C2 Server编译器

    JVM的栈分为java的方法栈和本地方法栈。每个方法调用会在栈上划出一块作为栈帧,一个栈是由多个栈帧构成。

    展开全文
  • 1、准备工作(1)Python版本为3.6或者更高版本(2)已经创建了一个Python工程并且添加了内容,具体参考:Getting Started tutorial2、第一步——运行代码打开之前编写的Oldboy.py文件,编辑框中右键,选择快捷菜单中的...

    1、准备工作

    (1)Python版本为3.6或者更高版本

    (2)已经创建了一个Python工程并且添加了内容,具体参考: Getting Started tutorial

    2、第一步——运行代码

    打开之前编写的Oldboy.py文件,在编辑框中右键,选择快捷菜单中的“Run 'Oldboy'”选项。

    3、什么是Run/Debug模式

    每个需要运行/调试的脚本文件都需要一个特殊的配置文件来指定其脚本名称、所在目录以及其他重要的运行调试信息。Pycharm已经集成了这种配置文件,避免用户手动去创建。

    每次当你单击Run或者Debug按钮时(或者在快捷菜单中执行相同操作),实际上都是将当前的运行/调试配置文件加载到当前的调试模型中。

    如果你仔细观察第一张图片就会发现,在组合框中根本就没有 run/debug的相关信息,知道第二张图片中它们才出现。这就意味着当执行运行/调试命令的时候,Solver脚本的run/debug配置文件才会自动生成,正如现在所显示的这样。

    此时再主工具栏中Run(绿色箭头按钮)和Debug(绿色甲壳虫按钮)两个按钮变得可用:

    图中两个按钮由Pycharm自动创建

    如果设置了多个run/debug方案,可以在图中的下拉列表里选中一个,作为当前的功项目配置文件。

    4、配置run/debug配置信息

    在上图的下拉列表中,单击Edit configuration选项,打开run/debug配置编辑窗口:

    在左侧目录中将会出现两个节点:Python和Default。在第一个节点目录下有一个单一的配置选项'oldboy',在第二个选项下则有很多配置信息。

    这意味着什么呢?

    在Default节点下,你只能看到框架的名称或者模式名称,如果你创建一个新的Run/Debug配置文件,它将会在所选中的模式分支下进行创建,如果你更改了Default节点下的设置,相应的与其相关的所有配置文件都会更改。

    例如,你想将Pycharm中所用到的Python解释器替换成远程或者本地解释器,就可以通过更改Python页面下的解释器设置,这样所有新建的调试配置文件都会使用这个新的解释器。

    早Python节点下,只用单一的配置选项'Oldboy',它属于Python类型的配置,但与Default节点下的Python机制并不相同,它使用一个非透明的图标进行的表示,这是用来指示当前配置文件的保存状态的,当你保存配置文件之后图标即变为非透明状态。例如,我们在Python类型下为当前的Solver脚本新建一个配置文件,取名'Oldboy1'。

    如果你对已存在的配置文件做了任何更改,这些更改只会应用于对应的脚本区域。

    5、正式运行代码文件

    我们已经能够通过一种非常直接的方式,接下来我们寻求其他方法来运行脚本。

    正如我们所知,运行脚本意味着加载当前的调试配置文件,因此,运行脚本主要遵循以下流程:

    (1)在主工具栏中,单击run/debug组框,确认当前的调试配置文件信息

    (2)做下面的工作(三选一即可):

    单击运行按钮,加载配置文件

    按下Shift+F10快捷键

    在主菜单上,选择Run → Run

    此时,我们可以在Run tool window.窗口中观察程序的运行结果。

    6、选择一个测试器

    首先,需要指定一个测试器。单击工具栏的设置按钮,打开Settings/Tools对话框,然后单击进入Python Intergated Tools页面(可以通过搜索功能找到),默认选择如下:

    7、创建一个test程序块

    首先我们创建一个test实例。Pycharm提供了一种非常智能的创建测试代码的方法:单击选中类名然后按下Ctrl+Shift+T快捷键,或者在主菜单中选择Navigate → Test,如果test程序已存在,则会直接跳转到对应代码,否则创建它:

    按照系统提示进行操作,Pycharm会显示如下对话框:

    单击OK按钮,查看创建结果:

    此时Pycharm已经自动创建了一个测试类,当然这只是一个类框架,需要我们手动编写测试函数。

    8、运行测试代码

    一切就绪后,右击测试类名,在弹出的快捷菜单中选择运行命令:

    9、调试运行

    首先要弄清楚,为什么要进行调试?假设我们的程序在运行过程中命中了一个错误,那我们如何定位错误发生的位置?这就需要进行调试。

    在Pycharm中我们可以在其中直接对程序进行调试,唯一需要做的准备工作就是在程序必要的地方加设断点,接下来我们进行详细的介绍:

    10、什么是断点?

    一个breakpoint标记了一个行的位置,当程序运行到该行代码的时候,Pycharm会将程序暂时挂起以方便我们对程序的运行状态进行分析。Pycharm支持若干中类型的断点 types of breakpoints,可以通过对应图标进行分辨。

    这里我们采用Python的行断点为例进行介绍

    11、设置断点

    方法非常简单,单击代码左侧的空白灰色槽即可:

    注意断点会将对应的代码行标记为红色,这种颜色标记目前还不能被用户所更改,我们会尽快出台解决方案。

    顺便说一句,取消断点的操作也很简单,在同样位置再次单击即可。

    当你将鼠标指针悬停在断点上方时,Pycharm会显示断点的关键信息,行号以及脚本属性,如果你希望更改该断点的属性,右击断点:

    12、代码调试

    接下来,我们正式开始对代码进行调试。

    首先从配置文件组框中选择同名的'Oldboy'文件作为当前调试的配置文件,然后单击调试按钮(绿色甲壳虫样式的按钮):

    接下来会Pycharm会执行以下操作:

    (1)PyCharm开始运行,并在断点处暂停

    (2)断点所在代码行变蓝,意味着Pycharm程序进程已经到达断点处,但尚未执行断点所标记的代码。

    (3)Debug tool window窗口出现,显示当前重要调试信息,并允许用户对调试进程进行更改。

    虽然Pycharm使用手册中已经完整提供了调试窗口中所有控件的功能信息,我们这里仍然对其进行简要介绍。我们发现窗口分为两个选项卡:Debugger tab and the Console tab。

    (1)Debugger窗口分为三个可见区域:Frames, Variables, 和 Watches。这些窗口列出了当前的框架、运行的进程,方便用户查看程序空间中变量的状态等。当你选择一个框架,就会显示出相关的变量信息,当然这些区域都是可以折叠隐藏的。

    (2)Console窗口显示当前的控制台输出信息,默认这个窗口位于Debugger之下,可以通过单击其标签将其前置显示。

    当然我们可以改变这些窗口的摆放位置,如果你不喜欢程序的默认排版的话。具体参加Moving tabs and areas章节。

    Debugger窗口的工作模式:

    按下F9(或者左侧工具栏的绿色箭头),程序会继续运行到下一断点处,通过这种方式你可以将每个断点都运行一遍,观察变量的变化。

    更多有关 Debugger窗口的信息参见软件手册:product documentation

    Console窗口的工作模式:

    为什么需要用到Console窗口呢?当我们需要查看程序给出的错误信息,或者进行一些额外的临时运算时,就需要在这个窗口里面进行。

    单击Console选项卡使其前置:

    激活了控制台机制,尝试在其中执行一些Python命令:

    展开全文
  • 1. python的代码写在哪里你有两种方式写python代码,他们针对不同的应用场景在python交互式解释器里写代码在编辑器里写代码在python交互式解释器里,你可以写简单的代码,尽管复杂的代码你也可以写,但不建议那样做...
  • 1. python的代码写在哪里你有两种方式写python代码,他们针对不同的应用场景在python交互式解释器里写代码在编辑器里写代码在python交互式解释器里,你可以写简单的代码,尽管复杂的代码你也可以写,但不建议那样做...
  • 1. python的代码写在哪里你有两种方式写python代码,他们针对不同的应用场景在python交互式解释器里写代码在编辑器里写代码在python交互式解释器里,你可以写简单的代码,尽管复杂的代码你也可以写,但不建议那样做...
  • python-将Django启动代码放在哪里?我想服务器启动(开发和生产)时执行以下代码行:from django.core import managementmanagement.call_command('syncdb', interactive=False)将其放入settings.py不起作用,因为它...
  • 在哪里可以找到java web(ssi,ssh,ssm等)的项目代码并可以运行拿来学习?
  • 当输入为: 3 acm.sjtu.edu.cn 将输入按照3行的Z字形排列: a s . . c . j u e u c m t d n 将它按行输出: as..c.jueucmtdn 当输入为: 4 acm.sjtu.edu.cn 将输入按照4行的Z字形排列: ...m s ........}
  • ``` #include #include #include #include ...// void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);...// 第三个参数comp是排序的方法:可以是从升序也可是降序 不写则默认的排序...
  • ``` #include #define YEAR 1990 #define MONTH 1 int mian() { int year,month,day,i=0; int y=0,m=0,len=0; printf("please input year month and day\n"); while(!i) { scanf("%d%d%d",&...```
  • 错误代码运行结果 ``` #include #include #include using namespace std; int t=0,i,v; int n[7]; int dp[60001]; bool flag =false; int imax(int a,int b) ...正确代码及其运行结果 ...求大神看看错的错在哪里
  • 对于一些刚入门 Python 的朋友来说,代码稍微复杂些就难以搞懂代码内部到底是怎么运行的了,而且有时一运行就报错,难以一下发现错误,只会用 Print 去慢慢找异常的地方,效率很低下。所以对程序进行监控和调试很...
  • 这里的环境,指的就是 Python 代码运行环境。它应该包含以下信息: 1、 Python 解释器,用哪个解释器来执行代码?(因为你可能装了很多python版本,2.7 3.4 3.6 3.8 etc 每个版本都可以理解为是解释器)。 2、...
  • 有些代码需要命令行输入参数来运行,如下: python train.py -net resnet50 之前都是命令行直接输入进行训练,但是这样的出错很难定位错误,命令行调试很不容易。 其实pycharm里运行最简单的方法是直接找到...
  • #include #include using namespace std; class INT { char *p_num; int len; public: //构造函数 INT() { p_num = NULL; len = 0; } INT(const char *p) { len = strlen(p)+1; p_num=new char...}
  • 如果是操作符,则将oper全部出栈至polish//这个while循环调试的时候,步骤跳的有异常。 printf("\ntest"); if((m=='(')||(m=='#')||(IsEmpty(oper))) { break;//*********读取到左括号或oper已经...
  • #include int main(){ int a,b,temp,s1,s2,z; scanf("%d %d",&a,&b); if(a){ temp=a; a=b; b=temp; } s1=a; s2=b; while(b!=0){ temp=s1%s2; s1=s2; s2=temp; } z=a*b/s2;...}
  • <p>I want to run some session handling code every time a URL or route is called, but I obviously want to be able to access this session variable in any controller I wish. Am I wrong in assuming ...
  • 我想把cin输入的一系列字符放到一个vector里面去 int main(int argc, char* argv[]) { vector<char> vi; copy(istream_iterator<char>(cin),istream_iterator<char>(),vi.begin());...
  • c++给工程加单实例运行代码,具体点步骤在哪里加,新手谢谢谢谢!!!
  • 同样的一段代码,在VC6上运行(见图1)和在Codeblocks上运行(见图2)结果有差异,而在Codeblocks上调试找问题时,结果却又是正确的了,不知问题出在哪里? #include <stdio.h> #include <stdlib.h>...
  • # pygame游戏库 sys操控python运行时的环境 import pygame,sys,random #这个模块包含各种pygame所使用的常量 from pygame.locals import * #1.定义颜色变亮 #0-255 0黑色 255白色 redColor = pygame.Color...
  • 这种方式下,只有run()函数内的程序段是真正运行于子线程中的。 为了搞明白moveToThread这种更“正确”方法的特点,专门做了一次实验 先贴代码。首先定义了一个测试用的类。类里面有一个槽函数,并且通过槽函数...
  • 最近研究28335的自升级问题,没想到自...之前一直认为,程序Flash中运行SRAM运行的主要不同点就在于以下的代码: MemCopy( &RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); InitFlas
  • 请各位大概指教错在哪里?因为我不明白。谢谢 以下是提示错误的代码,标黄错误提示下面这段<strong>RaiseEvent ColorClick(Colors(xPs, yPs), Button)</strong></p> <code>Private Sub UserControl_...
  • #include<stdio.h> double fac(int m, int n) { int i, j, k, l, q, t; double s; s = 0; l = 1; q = 1; t = 1; for (i = 1;i <= m;i++) { l = l * i; } for (j = 1;...}
  • 在pycharm中,也无法运行、 ``` ```def main(): a,b = eval(input()) try: ...ps:我在pycharm中是严格按照python语言规定写的,但是这段代码里面不是得给ab赋值嘛,运行的时候在哪里赋值呀
  • Python运行有两个方式,一个是...看到>>>是Python交互式环境下:Python交互式环境下,只能输入Python代码并立刻执行。所以好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍。第二种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,723
精华内容 1,089
关键字:

代码在哪里运行