小编KOU*_*DAL的帖子

如何知道Apache Spark中当前正在运行的作业的哪个阶段?

考虑一下我在Spark有一份工作;

CSV文件 ==> 按列过滤 ==> 取样 ==> 另存为JSON

现在我的要求是如何知道作业当前正在以编程方式执行哪个步骤(获取文件或过滤或采样)(最好使用Java API)?这有什么办法吗?

我可以使用SparkListener类跟踪Job,Stage和Task .它可以像跟踪阶段ID一样完成.但是如何知道哪个阶段Id适用于工作链中的哪一步.

考虑按列过滤完成后,我想向用户发送通知.为此,我创建了一个扩展SparkListener类的类.但我无法从中找到当前正在执行的转换名称的名称.有可能跟踪吗?

public class ProgressListener extends SparkListener{

  @Override
  public void onJobStart(SparkListenerJobStart jobStart)
  {

  }

  @Override
  public void onStageSubmitted(SparkListenerStageSubmitted stageSubmitted)
  {
      //System.out.println("Stage Name : "+stageSubmitted.stageInfo().getStatusString()); giving action name only
  }

  @Override
  public void onTaskStart(SparkListenerTaskStart taskStart)
  {
      //no such method like taskStart.name()
  }
}
Run Code Online (Sandbox Code Playgroud)

java scala bigdata apache-spark

12
推荐指数
1
解决办法
2054
查看次数

以gzip格式发送数据导致ajax进度停止了一段时间

我通过jquery maj ajax调用,在服务器端我使用PHP.目的是从服务器端带来一个大的JSON数据.由于JSON大小很大,这就是我在发送数据时使用gzip压缩的原因.

在服务器端;

ob_start('ob_gzhandler');
header('Content-Encoding: gzip');
Run Code Online (Sandbox Code Playgroud)

现在我看到正在传输的数据量大幅减少.但是我看到ajax调用进度停留了一段时间(我通过chrome网络监控区域检查).

观察结果如下;

1.呼叫状态显示待处理约23秒(这是完美的,因为它与生成JSON完全相同)

2.数据传输从第24秒开始,并在接下来的5到6秒内继续传输94.4 kB数据

3.之后它几乎停滞了20秒,当时间没有增加时,我的意思是它显示同样的时间停留在第2点.

4.然后它突然显示ajax调用完成,我得到完整的数据和时间显示直接到56秒左右.数据大小保持不变,即94.4 kb,这意味着在第3阶段和第4阶段没有传输额外数据

所以,请你解释我的第3阶段和第4阶段,我没有得到这种行为的原因.

而那种帮助将非常有帮助.如果您需要更多信息,请告诉我.

javascript php ajax jquery gzip

7
推荐指数
1
解决办法
237
查看次数

Html vs JSP - 获取请求标头标记值

我正在研究Java应用程序.前端是Angular2.

如果我尝试打开我的应用程序主页( index.html在web.xml中配置为默认页面).访问URL应为 http:// localhost:8080/MyWebApp.

然后我进入了标准组织的登录页面进行身份验证.如果验证成功,将在请求标头中设置HTTP授权令牌,最后控件将显示我的应用程序主页.

如果我使用jsp,我可以获取请求标头,

String authHeader = request.getHeader("authorization");          
out.println("<h2>HTTP Authorization header:</h2>");

if (authHeader == null) {            
     out.print("No authorization header");      
} else {            
     out.print("<textarea readonly id='authHeader' rows=\"5\" cols=\"80\">" + authHeader + "</textarea>");
}
Run Code Online (Sandbox Code Playgroud)

但我们使用html作为前端,因为角度为2.

所以对于我的场景,我如何获得请求标头和令牌.

如果不清楚,请不要犹豫,编辑我的问题.

html javascript java jsp angular

6
推荐指数
1
解决办法
1616
查看次数

与csv文件相比,将mysql表转换为spark数据集的速度非常慢

我在亚马逊s3中有csv文件,大小为62mb(114000行).我正在将其转换为spark数据集,并从中获取前500行.代码如下;

DataFrameReader df = new DataFrameReader(spark).format("csv").option("header", true);
Dataset<Row> set=df.load("s3n://"+this.accessId.replace("\"", "")+":"+this.accessToken.replace("\"", "")+"@"+this.bucketName.replace("\"", "")+"/"+this.filePath.replace("\"", "")+"");

 set.take(500)
Run Code Online (Sandbox Code Playgroud)

整个操作需要20到30秒.

现在我尝试相同但是使用csv我正在使用带有119 000行的mySQL表.MySQL服务器在亚马逊ec2.代码如下;

String url ="jdbc:mysql://"+this.hostName+":3306/"+this.dataBaseName+"?user="+this.userName+"&password="+this.password;

SparkSession spark=StartSpark.getSparkSession();

SQLContext sc = spark.sqlContext();

DataFrameReader df = new DataFrameReader(spark).format("csv").option("header", true);
Dataset<Row> set = sc
            .read()
            .option("url", url)
            .option("dbtable", this.tableName)
            .option("driver","com.mysql.jdbc.Driver")
            .format("jdbc")
            .load();
set.take(500);
Run Code Online (Sandbox Code Playgroud)

这需要5到10分钟.我在jvm里面运行火花.在两种情况下使用相同的配置.

我可以使用partitionColumn,numParttition等但我没有任何数字列,还有一个问题是我不知道该表的模式.

我的问题不是如何减少所需的时间,因为我知道在理想情况下火花将在集群中运行,但我无法理解的是为什么在上述两种情况下这个大的时间差异?

java mysql jdbc amazon-s3 apache-spark

6
推荐指数
1
解决办法
2233
查看次数

Php脚本会被多次自动调用

我在这里遇到一个奇怪的问题.我正在使用javascript ajax(我使用jquery).现在的情景是;

一个ajax调用是调用一个php脚本,它基本上是一个长时间运行的进程,它设置了一些会话变量.

稍后在某些时间间隔(比方说,每2秒)我运行另一个ajax调用来检查会话变量,以了解进程(第一个PHP脚本执行)何时完成.

第一个php脚本从数据库中获取数据并将其拧入文件中.在每个提取中,我计算循环数并将其存储到会话变量中以保留某种跟踪记录.喜欢;

 $i=0;
 $_SESSION['time']=date('m-d-Y H:i:s');
 while(...)
 {
     ini_set('session.use_only_cookies', false);
     ini_set('session.use_cookies', false);
     ini_set('session.use_trans_sid', false);
     ini_set('session.cache_limiter', null);
     session_start();
     $_SESSION['tracksatus']="loop number : ".$i." time is :"$_SESSION['time'];
     session_write_close();

     $i++;

     ......
     ......
 }
Run Code Online (Sandbox Code Playgroud)

我通过setIntervalajax 调用的另一个php脚本就是这样做的;

 echo $_SESSION['trackstatus']
Run Code Online (Sandbox Code Playgroud)

设定的间隔ajax让我回归;

  loop number 1 time is m-d-Y H:i:s
  loop number 5 time is m-d-Y H:i:s
  loop number 8 time is m-d-Y H:i:s
  ......
Run Code Online (Sandbox Code Playgroud)

然后再打几次电话;

  loop number 1 time is m-d-Y H1:i1:s1
  .....
Run Code Online (Sandbox Code Playgroud)

注意H:i:s的变化为H1:i1:s1

所以根据我的理解,php脚本正在调用两次.并且对于您的信息,相同的代码在12小时之前就可以正常工作.我之前遇到过这个问题,并以某种方式解决了它(试错,所以我不知道怎么样或者可能是自动的......好吧,实际上我没有线索).

能否请你告诉我我做错了什么?如果您需要更多信息,请提及.

有趣的是,它只是在询问了这个问题之后才按预期工作,甚至没有改变一行代码.但我想知道原因.

javascript php ajax jquery

6
推荐指数
1
解决办法
320
查看次数

无法通过 apache poi 在条件格式单元格中设置字体颜色

我的目的是将条件格式规则从一张工作表复制到另一张工作表,其中两张工作表通过 apache poi 不在同一个工作簿中。为此,我使用以下代码;

for(int i=0;i<sscf.getNumConditionalFormattings();i++){

        ConditionalFormatting cf = sscf.getConditionalFormattingAt(i);
        CellRangeAddress[] range = cf.getFormattingRanges();

        //getting various properties from source
        ConditionalFormattingRule rule = cf.getRule(0);

        PatternFormatting pattern = rule.getPatternFormatting();
        Color bgcolor = pattern.getFillBackgroundColorColor();
        Color fgcolor = pattern.getFillForegroundColorColor();
        Short fillPattern = pattern.getFillPattern();

        FontFormatting font = rule.getFontFormatting();
        int colorIndex = font.getFontColorIndex();
        Color fontColor = font.getFontColor();
        int fontHeight = font.getFontHeight();
        short ulType = font.getUnderlineType();

        //--------------------------------End of getting------------------------------

        //setting properties from source
        ConditionalFormattingRule newRule = dscf.createConditionalFormattingRule(rule.getFormula1());
        PatternFormatting newPattern = newRule.createPatternFormatting();
        FontFormatting newFont = newRule.createFontFormatting();

        if(bgcolor != …
Run Code Online (Sandbox Code Playgroud)

java apache excel apache-poi

5
推荐指数
0
解决办法
777
查看次数

values.join不是http.es5.js Angular 4文件中的函数

在角度4中我使用了一个代码片段;

let h = [{Content: 'application/json'}];

this.http.post(server, this.userDataObj, {headers: h}).....
Run Code Online (Sandbox Code Playgroud)

所以基本上我想在我的ajax调用中添加一个标题.

现在我经常遇到错误

ERROR TypeError: values.join is not a function

我检查了错误位置,我发现在http.es5.js文件中有一个代码,如;

 req.headers.forEach(function (name, values) {
      return xhr.setRequestHeader(name, values.join(',')); 
 });
Run Code Online (Sandbox Code Playgroud)

现在我console.log(req.headers)在片段上方添加了一个,我得到了;

 [Object]
      0:Object
         Content: 'application/json'
Run Code Online (Sandbox Code Playgroud)

现在据我所知,函数里面的forEach循环在JS中的数组中取第二个参数(这是http.es5.js中的值)是元素的索引.我测试了通过console.log(values),我得到了结果0.所以自然值values.join不是一个函数,它永远不会是一个整数的函数.

我试过了 ;

var headers = new Headers();
headers.append("Content", 'application/json');

this.http.post(server, this.userDataObj, {headers: headers}).subscribe(.....
Run Code Online (Sandbox Code Playgroud)

这也给了我同样的错误.

试过这个;

var h = new Headers();
h.append("kkk", 'aaa');
let options = new RequestOptions({ headers: h });

this.http.post(server, this.userDataObj, options).subscribe(.....
Run Code Online (Sandbox Code Playgroud)

还是一样的错误.

这是一个错误吗?或者我有任何错误吗?任何想法都对我很有帮助.

PS:我是Angular4的新手.

javascript angularjs

3
推荐指数
1
解决办法
1994
查看次数

在 JGit 中获取异常“org.eclipse.jgit.api.errors.InvalidConfigurationException:无密钥远程值”

我正在尝试从托管在 bitbucket 的远程存储库中提取数据。为此,我使用 JGit。我的代码如下;

        Git git = Git.open( new File( localPath+"/.git" ) );

        PullCommand pullCmd = git.pull();
        pullCmd.setCredentialsProvider(this.credentialsProvider);
        pullCmd.setRemoteBranchName(branch);
        //pullCmd.setRemote("origin");
        pullCmd.setRemote(remoteUrl);

        PullResult result = pullCmd.call();
        //FetchResult fetchResult = result.getFetchResult();
        //MergeResult mergeResult = result.getMergeResult();
        //mergeResult.getMergeStatus();
Run Code Online (Sandbox Code Playgroud)

但我总是遇到例外,

    org.eclipse.jgit.api.errors.InvalidConfigurationException: No value for key remote.https://xyz@bitbucket.org/xyz/testproject.git.url found in configuration
        at org.eclipse.jgit.api.PullCommand.call(PullCommand.java:266)
        at git.GitPullOperation.execute(GitPullOperation.java:37)
        at ui.MainScreen.invokeGitOperation(MainScreen.java:214)
Run Code Online (Sandbox Code Playgroud)

尝试了 stackoverflow 中的所有答案,但没有任何效果。

任何帮助对我来说都是很大的。

java git jgit

3
推荐指数
1
解决办法
1579
查看次数

无法从Javascript中的另一个方法内部调用一个方法

检查下面的代码,我只是在这里迷路,为什么会收到此错误。请提出任何建议。在这里,我进行了一个类测试,并添加了两个方法check和nextfn。我正在打电话给nextfn。

var test=function(){}

test.prototype.check=function()
{
  console.log("hello from checking");
}

test.prototype.nextFn=function(){

  check();

  console.log("Hello from nextfn");
}
Run Code Online (Sandbox Code Playgroud)

下一个

var t=new test();
t.nextfn();
Run Code Online (Sandbox Code Playgroud)

错误是

Uncaught ReferenceError: check is not defined(…)
Run Code Online (Sandbox Code Playgroud)

现在考虑另一种情况;

test.prototype.anotherFn=function()
{
    var p=new Promise(function(){
         this.check();
    })
}
Run Code Online (Sandbox Code Playgroud)

现在也出现同样的错误;

Uncaught ReferenceError: check is not defined(…)
Run Code Online (Sandbox Code Playgroud)

打电话时

var t=new test();
t.anotherFn();
Run Code Online (Sandbox Code Playgroud)

javascript oop methods prototype class

2
推荐指数
1
解决办法
611
查看次数

“无法将服务“Album\Controller\AlbumController”解析到工厂;您确定是在配置期间提供的吗?在 Zend 框架 2 中

我在 Zend Framework 2 教程项目中遇到错误,因为,

Unable to resolve service "Album\Controller\AlbumController" to a factory; are you certain you provided it during configuration?
Run Code Online (Sandbox Code Playgroud)

我的 Module.php 作为

namespace Album;

use Zend\ModuleManager\Feature\ConfigProviderInterface;

class Module implements ConfigProviderInterface
{
public function getConfig()
{
    return include __DIR__ . '/../config/module.config.php';
}

public function getServiceConfig()
{
    return [
        'factories' => [
            Model\AlbumTable::class => function($container) {
                $tableGateway = $container->get(Model\AlbumTableGateway::class);
                return new Model\AlbumTable($tableGateway);
            },
            Model\AlbumTableGateway::class => function ($container) {
                $dbAdapter = $container->get(AdapterInterface::class);
                $resultSetPrototype = new ResultSet();
                $resultSetPrototype->setArrayObjectPrototype(new Model\Album());
                return new TableGateway('album', …
Run Code Online (Sandbox Code Playgroud)

php zend-framework

0
推荐指数
1
解决办法
9182
查看次数