小编Jar*_*red的帖子

为什么我的方法抛出NoSuchMethodError?

我已成功实现了reflectionEquals方法,其中包含一个排除字段列表.

return  EqualsBuilder.reflectionEquals(this, obj, new String[] {"files", "notes", "status"});
Run Code Online (Sandbox Code Playgroud)

但是,我最近在Java 1.5上编译了我的程序,现在当程序遇到上述行时出现以下错误:

java.lang.NoSuchMethodError:org.apache.commons.lang.builder.EqualsBuilder.= reflectionEquals(Ljava/lang/Object; Ljava/lang/Object; [Ljava/lang/String;)Z

如果有人了解该方法在运行时不存在的原因,我将不胜感激

java equals nosuchmethoderror

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

反序列化对象后静态变量的值是多少?

假设我创建了一个B类实例,它有一个静态变量x,在B类声明中赋值为3.在main()方法中,我这样做:

B b = new B();
b.x = 7; //allowed to use an instance to set the static member value
Run Code Online (Sandbox Code Playgroud)

在此之后,b被序列化然后反序列化.然后,出现以下行:

System.out.println ("static: " + b.x);
Run Code Online (Sandbox Code Playgroud)

有什么价值?7或3?

我知道静态变量不是序列化的,但是,因为整个类只有一个静态成员的副本,并且该值设置为7,如果在反序列化实例后保留它?

java serialization static member

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

如何将时间戳类型的PySpark数据帧截断到当天?

我有一个PySpark数据框,在列中包含时间戳(调用列'dt'),如下所示:

2018-04-07 16:46:00
2018-03-06 22:18:00
Run Code Online (Sandbox Code Playgroud)

当我执行:

SELECT trunc(dt, 'day') as day
Run Code Online (Sandbox Code Playgroud)

...我期望:

2018-04-07 00:00:00
2018-03-06 00:00:00
Run Code Online (Sandbox Code Playgroud)

但我得到了:

null
null
Run Code Online (Sandbox Code Playgroud)

我如何截断到一天而不是一小时?

apache-spark apache-spark-sql pyspark pyspark-sql

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

在pyspark 2.3中,如何处理json模式推断后不区分大小写导致的列名不明确?

在 Pyspark 2.3 中,假设我有一个如下所示的 JSON 文档:

{
   "key1": {
       "key2": "abc",
       "KEY2": "def"
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上,我有数十亿个这样的文档,每个文档都有可能有数百(甚至数千)个周期性变化的深度嵌套结构。但是这个简单的文档说明了这个问题。

如果我做:

df = session.read.json(<file>)
df.select('key1.key2')
df.select('key1.KEY2')
Run Code Online (Sandbox Code Playgroud)

两个选择都将失败并显示如下错误:

pyspark.sql.utils.AnalysisException: 'Ambiguous reference to fields StructField(key2,StringType,true), StructField(KEY2,StringType,true);'
Run Code Online (Sandbox Code Playgroud)

由于模式的广度及其不断变化的性质,通过 StructType 结构对模式进行硬编码是不切实际的。

我该如何处理这种情况?理想情况下,我有一种方法可以重命名重复的列,这样它们就不会发生冲突(例如,'key2_0'、'KEY2_1' 等)。不幸的是,我找不到任何方法来迭代列列表或更改列名,而无需首先能够通过名称明确引用列。

apache-spark pyspark pyspark-sql

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