考虑一下我在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) 我通过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阶段,我没有得到这种行为的原因.
而那种帮助将非常有帮助.如果您需要更多信息,请告诉我.
我正在研究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.
所以对于我的场景,我如何获得请求标头和令牌.
如果不清楚,请不要犹豫,编辑我的问题.
我在亚马逊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等但我没有任何数字列,还有一个问题是我不知道该表的模式.
我的问题不是如何减少所需的时间,因为我知道在理想情况下火花将在集群中运行,但我无法理解的是为什么在上述两种情况下这个大的时间差异?
我在这里遇到一个奇怪的问题.我正在使用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小时之前就可以正常工作.我之前遇到过这个问题,并以某种方式解决了它(试错,所以我不知道怎么样或者可能是自动的......好吧,实际上我没有线索).
能否请你告诉我我做错了什么?如果您需要更多信息,请提及.
有趣的是,它只是在询问了这个问题之后才按预期工作,甚至没有改变一行代码.但我想知道原因.
我的目的是将条件格式规则从一张工作表复制到另一张工作表,其中两张工作表通过 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) 在角度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的新手.
我正在尝试从托管在 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 中的所有答案,但没有任何效果。
任何帮助对我来说都是很大的。
检查下面的代码,我只是在这里迷路,为什么会收到此错误。请提出任何建议。在这里,我进行了一个类测试,并添加了两个方法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) 我在 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)