小编λ A*_*r λ的帖子

Spark上使用json4s的NotSerializableException

基本上,我必须使用Spark分析HDFS上的一些复杂的JSON.

我使用"for comprehensions"来(预)过滤json的jSON和"extract"方法,将它包装成一个case类

这个工作正常!

def foo(rdd: RDD[String]) = {

case class View(C: String,b: Option[Array[List[String]]],  t: Time)
case class Time($numberLong: String)
implicit val formats = DefaultFormats

rdd.map { jsonString =>
  val jsonObj = parse(jsonString)
  val listsOfView = for {
    JObject(value) <- jsonObj
    JField(("v"), JObject(views)) <- value
    normalized <- views.map(x => (x._2))
  } yield normalized
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好!

当我尝试将(预)过滤的JSON提取到我的CaseClass时,我得到这个:

线程"main"中的异常org.apache.spark.SparkException:由于阶段失败而中止作业:任务不可序列化:java.io.NotSerializableException:org.json4s.DefaultFormats $

这里带有提取的代码:

def foo(rdd: RDD[String]) = {

case class View(C: String,b: Option[Array[List[String]]],  t: Time)
case class Time($numberLong: String)
implicit val formats = DefaultFormats …
Run Code Online (Sandbox Code Playgroud)

json scala hdfs json4s apache-spark

9
推荐指数
1
解决办法
2672
查看次数

Kubernetes白名单源范围块而不是白名单IP

在GKE上运行Kubernetes

使用头盔安装了具有最新稳定版本的Nginx控制器。

一切正常,除了添加白名单-源范围注释结果之外,因为我完全无法使用我的服务。

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: staging-ingress namespace: staging annotations: kubernetes.io/ingress.class: nginx ingress.kubernetes.io/whitelist-source-range: "x.x.x.x, y.y.y.y" spec: rules: - host: staging.com http: paths: - path: / backend: serviceName:staging-service servicePort: 80 我连接到控制器Pod的Ingress配置 ,并检查了Nginx配置,发现了这一点:

# Deny for staging.com/
geo $the_real_ip $deny_5b3266e9d666401cb7ac676a73d8d5ae {
    default 1;

    x.x.x.x 0;
    y.y.y.y 0;
}
Run Code Online (Sandbox Code Playgroud)

好像他将我拒之门外,而不是将该IP列入白名单。但这也锁定了所有其他地址...我从staging.com主机获得了403。

nginx google-compute-engine kubernetes

5
推荐指数
2
解决办法
3355
查看次数

如何使用运行时参数在Scala中创建单个对象

我试图用运行时指定的参数创建一个单例对象.例:

object NetworkPusher {
  val networkAdress = ???
  ...
 }
Run Code Online (Sandbox Code Playgroud)

想象一下,networkAdress param来自命令行.有人可以帮我解决这个问题吗?谢谢!

scala

4
推荐指数
1
解决办法
3635
查看次数

Spring Security - Wss4jSecurityInterceptor - Nullpointer

我很幸运将大型单片系统从Java7和Scala 2.10迁移到Java8和Scala 2.11.到现在为止还挺好.该应用程序正在使用SpringSecurity.

在将spring库更新到最新库之后,我们遇到了validateMessage方法中Wss4jSecurityInterceptor中抛出的空指针异常:

if (validationActionsVector.contains(WSConstants.NO_SECURITY)) {
            return;
}
Run Code Online (Sandbox Code Playgroud)

运行测试期间发生异常.但是,在我发布大量代码(测试/实现......)之前,可能有人知道在哪里解决问题 - 或者应该更详细地研究哪个部分.

编辑:

一个有趣的事实是,通过使用Java7和Scala 2.10(具有相同的库版本)进行编译,不会发生空指针异常.

java scala spring-security wss4j

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