我试图在Scala中链接Futures,但它给了我错误的返回类型.
我有以下方法:
def getOneRecordByModel(x:DirectFlight): Future[Option[FlightByDetailModel]] = {
select.allowFiltering().where(_.from eqs x.from).and(_.to eqs x.to).and(_.departure eqs x.departure).and(_.arrival eqs x.arrival).and(_.carrier eqs x.airline).and(_.code eqs x.flightCode).one()
}
def getRecordByUUID(x:FlightByDetailModel): Future[Option[FlightByUUIDModel]] = {
select.allowFiltering().where(_.uuid eqs x.uuid).one()
}
def getUUIDRecordByModel(x:DirectFlight): Future[Option[FlightByUUIDModel]] = {
getOneRecordByModel(x) andThen {
case Success(Some(flight)) => getRecordByUUID(flight)
case Success(x) => Success(x)
case Failure(x) => Failure(x)
}
}
Run Code Online (Sandbox Code Playgroud)
但现在我得到了getUUIDRecordByModel返回类型的错误Future[Option[FlightByDetailModel]]
我如何正确链接它们?
我在Play 2.3中有以下JSON阅读器:
import play.api.libs.json._
import play.api.libs.json.Reads._
val airportSearchReads: Reads[String] = (JsPath \ "search").read[String](minLength(3))
Run Code Online (Sandbox Code Playgroud)
并且编译器给了我错误
diverging implicit expansion for type play.api.libs.json.Reads[M]
starting with method ArrayReads in trait DefaultReads
Run Code Online (Sandbox Code Playgroud)
如果我使用implicit val我得到的
ambiguous implicit values:
both value uuidReads in trait DefaultReads of type => play.api.libs.json.Reads[java.util.UUID]
and value airportSearchReads in object AirportSearch of type => play.api.libs.json.Reads[String]
match expected type play.api.libs.json.Reads[M]
Run Code Online (Sandbox Code Playgroud)
我如何让它工作?
json scala playframework playframework-2.0 playframework-json
我想设置自己的CA以与cassandra集群一起使用,这样我每次添加新节点时都不必复制所有证书.我已经阅读了一些Cassandra和SSL的教程,但它们都可以复制证书.我在CA流程中有点迷失
这是我认为我需要做的
现在:
优点:不再在节点之间复制ssl证书.每个节点只需一个,然后就可以了.
编辑:
好的,我就这样做了.如果我犯了任何错误,请告诉我.我遗漏了像JCE文件和适当的cassandra.yaml配置之类的东西.这些需要出现在服务器上!
openssl genrsa -out clusterCA.key 2048
openssl req -x509 -new -key clusterCA.key -days <DAYS> -out clusterCA.pem
keytool -importcert -alias clusterCA -file clusterCA.pem -keystore clustertruststore -storepass <PASS>
#on each cassandra host for clients. for client replace nodename with clientname
keytool -genkeypair -alias <NODENAME> -keyalg RSA -keysize 2048 -dname "CN=<NODENAME>,OU=<UNITNAME>,O=<ORGANISATION>" -keypass <PASS> -keystore <NODENAME>.keystore -storepass <PASS> -validity <DAYS>
keytool -keystore <NODENAME>.keystore -alias <NODENAME> -certreq -file <NODENAME>.cert -storepass <PASS> …Run Code Online (Sandbox Code Playgroud) 这就是我想要的:我有一个叫做结果的大数组.我希望将该数组中的每个项放入我的迭代函数中并将其保存到我的mongoDB中(我在这里省略了一些不重要的步骤).在将这些项目中的每一项保存到数据库(或拒绝)之后,我希望console.log显示"All done".不幸的是,所有完成都会在调用系列后立即显示,而其他所有内容仍在处理中.我该怎么做?
我正在使用mongoose和一个名为'light'的模型,为了便于阅读,我省略了代码中的所有错误消息.我对eachSeries部分使用node-async
var async = require('async');
var results = [very big array]
var iteration = function(row,callbackDone) {
light.find({data: row.data}, function (err,entry) {
if(entry.length) {
callbackDone();
return console.log(entry + ' already exists');
}
var newEntry = new light(row);
newEntry.save(function (err,doc) {
console.log(entry + ' saved');
callbackDone();
});
});
};
async.eachSeries(results,iteration, function (err) {
console.log('All done');
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试访问 s3 上_以 Apache Spark开头的 gz 文件。不幸的是,spark 认为这些文件不可见并返回Input path does not exist: s3n:.../_1013.gz. 如果我删除下划线,它会发现该文件就好了。
我尝试向 hadoopConfig 添加自定义 PathFilter:
package CustomReader
import org.apache.hadoop.fs.{Path, PathFilter}
class GFilterZip extends PathFilter {
override def accept(path: Path): Boolean = {
true
}
}
// in spark settings
sc.hadoopConfiguration.setClass("mapreduce.input.pathFilter.class", classOf[CustomReader.GFilterZip], classOf[org.apache.hadoop.fs.PathFilter])
Run Code Online (Sandbox Code Playgroud)
但我仍然有同样的问题。有任何想法吗?
系统:Apache Spark 1.6.0 和 Hadoop 2.3
我有以下构造,在那里我有一个
trait DataServiceLocalImpl extends DataService {
override lazy val dataService = DataComponentLocalImpl
}
object DataComponentLocalImpl extends DataComponent {
def getData(element:String):String = GetStuffFromFile(element)
}
trait DataService {
val dataService: DataComponent
}
trait DataComponent {
def getData(element:String):String
}
Run Code Online (Sandbox Code Playgroud)
GetStuffFromFile 从磁盘读取文件一次(我只想要一次,因此是对象),创建一个映射,然后返回元素的值。
这一切都是在 Play Framework 2.3 周围完成的,该应用程序也能正常工作,但是当我在测试中将其作为隐式使用时,我收到以下错误:
java.lang.NoClassDefFoundError: Could not initialize class DataComponentLocalImpl
测试套件:
class AutoCompleteSpec extends PlaySpec with Mockito with OneAppPerSuite {
val resource = new DataServiceLocalImpl {}
implicit val dataService = resource.dataService
}
Run Code Online (Sandbox Code Playgroud)
如果我删除隐式它会起作用......
scala ×3
apache-spark ×1
asynchronous ×1
cassandra ×1
future ×1
hadoop ×1
java ×1
javascript ×1
json ×1
mongodb ×1
node.js ×1
ssl ×1
unit-testing ×1