我刚刚将Scala项目从2.10更新到2.11.2.
对于以下代码:
if( x < 1.e-150 ) // conditional ops...
Run Code Online (Sandbox Code Playgroud)
我收到了错误
e不是Int的成员
以前的科学概念已经奏效了.我怀疑这不是2.11的事情,但更可能是升级的一些奇怪,这在很大程度上只是更新sbt文件的情况:
scalaVersion := "2.11.2"
Run Code Online (Sandbox Code Playgroud)
之前的地方:
scalaVersion := "2.10.3"
Run Code Online (Sandbox Code Playgroud)
我想不出可能导致这种情况的原因.我所知道的是它在2.10下工作正常.
有没有人见过这个问题或者可以建议修复?(或新的询问线!)
我正在使用JDK 1.7.0_21和sbt.version=0.13.5.
任何帮助或想法赞赏.
我正在使用 Apache Spark 生成镶木地板文件。我可以毫无问题地按日期对它们进行分区,但在内部我似乎无法按正确的顺序排列数据。
订单似乎在处理过程中丢失了,这意味着镶木地板元数据不正确(特别是我想确保镶木地板行组反映排序顺序,以便特定于我的用例的查询可以通过元数据进行有效过滤)。
考虑以下示例:
// note: hbase source is a registered temp table generated from hbase
val transformed = sqlContext.sql(s"SELECT id, sampleTime, ... , toDate(sampleTime) as date FROM hbaseSource")
// Repartion the input set by the date column (in my source there should be 2 distinct dates)
val sorted = transformed.repartition($"date").sortWithinPartitions("id", "sampleTime")
sorted.coalesce(1).write.partitionBy("date").parquet(s"/outputFiles")
Run Code Online (Sandbox Code Playgroud)
通过这种方法,我确实得到了正确的镶木地板分区结构(按日期)。更好的是,对于每个日期分区,我看到一个大的镶木地板文件。
/outputFiles/date=2018-01-01/part-00000-4f14286c-6e2c-464a-bd96-612178868263.snappy.parquet
Run Code Online (Sandbox Code Playgroud)
但是,当我查询文件时,我看到内容乱序。具体来说,“乱序”似乎更像是几个有序的数据帧分区已合并到文件中。
Parquet 行组元数据显示排序的字段实际上是重叠的(例如,特定 id 可以位于许多行组中):
id: :[min: 54, max: 65012, num_nulls: 0]
sampleTime: :[min: 1514764810000000, max: 1514851190000000, num_nulls: 0]
id: :[min: 827, max: …Run Code Online (Sandbox Code Playgroud)