为了构建NaiveBayes多类分类器,我使用CrossValidator来选择管道中的最佳参数:
val cv = new CrossValidator()
.setEstimator(pipeline)
.setEstimatorParamMaps(paramGrid)
.setEvaluator(new MulticlassClassificationEvaluator)
.setNumFolds(10)
val cvModel = cv.fit(trainingSet)
Run Code Online (Sandbox Code Playgroud)
管道包含通常的变换器和估计器,顺序如下:Tokenizer,StopWordsRemover,HashingTF,IDF,最后是NaiveBayes.
是否可以访问为最佳模型计算的指标?
理想情况下,我想访问所有模型的指标,以了解更改参数如何改变分类的质量.但目前,最好的模型已经足够好了.
仅供参考,我使用的是Spark 1.6.0
当我describe
在DataFrame上调用函数时出现问题:
val statsDF = myDataFrame.describe()
Run Code Online (Sandbox Code Playgroud)
调用describe函数会产生以下输出:
statsDF: org.apache.spark.sql.DataFrame = [summary: string, count: string]
Run Code Online (Sandbox Code Playgroud)
我可以statsDF
通过电话正常显示statsDF.show()
+-------+------------------+
|summary| count|
+-------+------------------+
| count| 53173|
| mean|104.76128862392568|
| stddev|3577.8184333911513|
| min| 1|
| max| 558407|
+-------+------------------+
Run Code Online (Sandbox Code Playgroud)
我想现在得到标准差和平均值statsDF
,但是当我试图通过做类似的事情来收集值时:
val temp = statsDF.where($"summary" === "stddev").collect()
Run Code Online (Sandbox Code Playgroud)
我越来越Task not serializable
异常了.
我打电话时也面临同样的异常:
statsDF.where($"summary" === "stddev").show()
Run Code Online (Sandbox Code Playgroud)
看起来我们无法过滤函数生成的DataFrame describe()
?
我正在阅读着名的操作系统概念书(Avi Silberschatz,Peter Baer Galvin,Greg Gagne)第9版:http://codex.cs.yale.edu/avi/os-book/OS9/
在进程同步章节中,有一个"Bounded-waiting Mutual Exclusion with test_and_set"的算法如下:
do {
waiting[i] = true;
key = true; // <-- Boolean variable that I do not see its utility
while (waiting[i] && key) // <-- the value of the key variable here is always true
key = test_and_set(&lock); // <-- it might become false here, but what is the point?
waiting[i] = false;
/* critical section */
j = (i + 1) % n;
while ((j != …
Run Code Online (Sandbox Code Playgroud) 我有一个看起来如下的DataFrame:
+-----------+-----+------------+
| userID|group| features|
+-----------+-----+------------+
|12462563356| 1| [5.0,43.0]|
|12462563701| 2| [1.0,8.0]|
|12462563701| 1| [2.0,12.0]|
|12462564356| 1| [1.0,1.0]|
|12462565487| 3| [2.0,3.0]|
|12462565698| 2| [1.0,1.0]|
|12462565698| 1| [1.0,1.0]|
|12462566081| 2| [1.0,2.0]|
|12462566081| 1| [1.0,15.0]|
|12462566225| 2| [1.0,1.0]|
|12462566225| 1| [9.0,85.0]|
|12462566526| 2| [1.0,1.0]|
|12462566526| 1| [3.0,79.0]|
|12462567006| 2| [11.0,15.0]|
|12462567006| 1| [10.0,15.0]|
|12462567006| 3| [10.0,15.0]|
|12462586595| 2| [2.0,42.0]|
|12462586595| 3| [2.0,16.0]|
|12462589343| 3| [1.0,1.0]|
+-----------+-----+------------+
Run Code Online (Sandbox Code Playgroud)
列类型为:userID:Long,group:Int和features:vector.
这已经是分组的DataFrame,即userID将最多一次出现在特定的组中.
我的目标是features
按组扩展列.
有没有办法在每个组中应用特征变换器(在我的情况下我想应用StandardScaler)而不是将其应用于完整的DataFrame.
使用ML的PS不是强制性的,因此如果解决方案基于MLlib则没有问题.
apache-spark spark-dataframe apache-spark-ml apache-spark-mllib
谁能告诉我我是否可以(在命令行中)发出包含文件和其他参数的 POST 命令?
我正在尝试执行以下操作:
curl -X POST -F "key=myKey&file=@myfile.txt" http://localhost:8080/myRestService/
Run Code Online (Sandbox Code Playgroud)
我在这个领域真的很新,所以请原谅我的基本问题。但它似乎效果不佳。有什么建议吗?非常坦克你
我正在读取包含日期的文本文件,我想在Java中将表示日期的字符串解析为Date对象.我注意到操作很慢.为什么?有没有办法加速呢?我的文件看起来像:
2012-05-02 12:08:06:950, secondColumn, thirdColumn
2012-05-02 12:08:07:530, secondColumn, thirdColumn
2012-05-02 12:08:08:610, secondColumn, thirdColumn
Run Code Online (Sandbox Code Playgroud)
我正在逐行读取文件,然后我String
从每一行获取日期,然后我Date
使用SimpleDateFormat
如下方法将其解析为对象:
DataInputStream in = new DataInputStream(myFileInputStream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while ((strLine = br.readLine()) != null)
{
....Do things....
Date myDateTime = (Date)formatter.parse(myDateString);
...Do things....
}
Run Code Online (Sandbox Code Playgroud) 我想知道为什么在部署我的Web应用程序时出现此错误.
log4j: Error Could not find value for key log4j.appender.SQL_APPENDER
Run Code Online (Sandbox Code Playgroud)
这是我的log4j.properties
档案.
log4j.rootLogger=error, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=application.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.org.hibernate.SQL=DEBUG, SQL_APPENDER
log4j.additivity.org.hibernate.SQL=false
Run Code Online (Sandbox Code Playgroud)
我是否必须在服务器端进行一些配置?我在Tomcat 7服务器上运行我的应用程序.我将此依赖项添加到pom.xml
文件中:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
Run Code Online (Sandbox Code Playgroud) 我有一个DateFrame如下:
+---+---------------------+---------------------+
|id |initDate |endDate |
+---+---------------------+---------------------+
|138|2016-04-15 00:00:00.0|2016-04-28 00:00:00.0|
|138|2016-05-09 00:00:00.0|2016-05-23 00:00:00.0|
|138|2016-06-04 00:00:00.0|2016-06-18 00:00:00.0|
|138|2016-06-18 00:00:00.0|2016-07-02 00:00:00.0|
|138|2016-07-09 00:00:00.0|2016-07-23 00:00:00.0|
|138|2016-07-27 00:00:00.0|2016-08-10 00:00:00.0|
|138|2016-08-18 00:00:00.0|2016-09-01 00:00:00.0|
|138|2016-09-13 00:00:00.0|2016-09-27 00:00:00.0|
|138|2016-10-04 00:00:00.0|null |
+---+---------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)
该行是通过有序id
然后initDate
按升序排列列.两列initDate
和endDate
列都具有Timestamp类型.为了便于说明,我只显示了属于一个id
值的记录.
我的目标是增加一个新列,显示每个id
之间的差值(以天为单位的短期)initDate
每行和endDate
上一行.
如果没有前一行,则该值将为-1.
输出应如下所示:
+---+---------------------+---------------------+----------+
|id |initDate |endDate |difference|
+---+---------------------+---------------------+----------+
|138|2016-04-15 00:00:00.0|2016-04-28 00:00:00.0|-1 |
|138|2016-05-09 00:00:00.0|2016-05-23 00:00:00.0|11 |
|138|2016-06-04 00:00:00.0|2016-06-18 00:00:00.0|12 |
|138|2016-06-18 00:00:00.0|2016-07-02 00:00:00.0|0 |
|138|2016-07-09 …
Run Code Online (Sandbox Code Playgroud) 我正在制作一个shell脚本,以便在崩溃后重启tomcat.我想我需要在我的脚本中处理此消息"Tomcat servlet引擎未运行,但pid文件存在." 这个消息意味着什么?我是否需要将其作为错误消息考虑在内,迫使我重新启动Tomcat?
我的脚本如下:
#!/bin/bash
SERVICE=/etc/init.d/tomcat7
STOPPED_MESSAGE=" * Tomcat servlet container is not running."
PID_FILE_MESSAGE=" * Tomcat servlet engine is not running, but pid file exists."
if [ "`$SERVICE status`" == "$STOPPED_MESSAGE" ];
then
{
$SERVICE start
}
else
if [ "`$SERVICE status`" == "$PID_FILE_MESSAGE" ];
then
{
$SERVICE restart
}
fi
fi
Run Code Online (Sandbox Code Playgroud) 假设我有一个运行时间很长的更新查询,我正在将〜200k更新为500k,甚至更多。为什么我需要更新这么多文档不在问题范围之内。
由于客户端超时(我使用官方的ES python客户端),因此我希望有一种方法来检查批量更新请求的状态,而不必使用巨大的超时值。
对于简短的请求,可以使用请求的响应,是否可以获取请求的响应,或者是否可以为请求指定name
或id
以便稍后引用。
对于正在运行的请求:我可以使用tasks API
获取信息。
但是对于其他状态-已完成/失败,我该如何获取。如果我尝试访问已完成的任务,则会得到resource not found
。
我正在使用update_by_query
更新的PS