以下REPL片段假定:
import scala.util.{Try, Success, Failure}
Run Code Online (Sandbox Code Playgroud)
为什么这两个语句没有通过编译?我得到"构造函数无法实例化为期望的类型":
Failure(new Exception("a")) match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
Success(123) match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
Run Code Online (Sandbox Code Playgroud)
我可以Try
通过get
或获得成功价值toOption
.有没有相应的方法来获得失败的Throwable
价值或Option[Throwable]
?
编辑:从失败/成功投射尝试工作
Failure(new Exception("a")).asInstanceOf[Try[Int]] match {
case Success(i) => "a"; case Failure(e) => "b"; case _ => "c"; }
Success(123).asInstanceOf[Try[Int]] match {
case Success(i) => "a"; case Failure(e) => "b"; case …
Run Code Online (Sandbox Code Playgroud) 为什么JDK8 DateTime库似乎无法解析有效的iso8601日期时间strings?它在时区偏移上窒息,表示为"+01"而不是"+01:00"
这有效:
java.time.ZonedDateTime.parse("2015-08-18T00:00+01:00")
Run Code Online (Sandbox Code Playgroud)
这会抛出一个解析异常:
java.time.ZonedDateTime.parse("2015-08-18T00:00+01")
Run Code Online (Sandbox Code Playgroud)
来自iso8601维基百科页面:
与UTC的偏移量以与"Z"相同的方式附加到时间,格式为±[hh]:[mm],±[hh] [mm]或±[hh].因此,如果描述的时间比UTC早一个小时(例如冬季柏林的时间),则区域指示符将为"+01:00","+ 0100"或简称为"+01".
编辑:这看起来像JDK中的实际合法错误.
https://bugs.openjdk.java.net/browse/JDK-8032051
哇,经过多年测试新的日期时间后,我认为他们会发现一些如此明显的东西.我还认为JDK作者类型非常严格,可以使用更好的自动化测试套件.
更新:这在当前的jdk-9版本中完全修复.我刚刚确认了.上面显示的完全相同的解析命令在当前的jdk-8构建中失败,并且在jdk-9中完美地工作.
附录:FWIW,基于ISO-8601的RFC 3339,不允许这个简写.您必须在时区偏移中指定分钟.
以下Spark代码正确演示了我想要做的事情,并使用一个小的演示数据集生成正确的输出.
当我在大量生产数据上运行相同的一般类型的代码时,我遇到了运行时问题.Spark作业在我的集群上运行约12个小时并失败.
只是看一下下面的代码,爆炸每一行似乎都是低效的,只是将它合并回来.在给定的测试数据集中,第四行包含array_value_1中的三个值和array_value_2中的三个值,它们将爆炸为3*3或9个爆炸行.
那么,在一个更大的数据集中,一行有五个这样的数组列,每列有十个值,会爆炸成10 ^ 5个爆炸行?
查看提供的Spark函数,没有开箱即用的功能可以实现我想要的功能.我可以提供用户定义的功能.这有什么速度缺点吗?
val sparkSession = SparkSession.builder.
master("local")
.appName("merge list test")
.getOrCreate()
val schema = StructType(
StructField("category", IntegerType) ::
StructField("array_value_1", ArrayType(StringType)) ::
StructField("array_value_2", ArrayType(StringType)) ::
Nil)
val rows = List(
Row(1, List("a", "b"), List("u", "v")),
Row(1, List("b", "c"), List("v", "w")),
Row(2, List("c", "d"), List("w")),
Row(2, List("c", "d", "e"), List("x", "y", "z"))
)
val df = sparkSession.createDataFrame(rows.asJava, schema)
val dfExploded = df.
withColumn("scalar_1", explode(col("array_value_1"))).
withColumn("scalar_2", explode(col("array_value_2")))
// This will output 19. 2*2 + 2*2 + 2*1 + …
Run Code Online (Sandbox Code Playgroud) 使用Avro Java API,我可以创建一个简单的记录模式,如:
Schema schemaWithTimestamp = SchemaBuilder
.record("MyRecord").namespace("org.demo")
.fields()
.name("timestamp").type().longType().noDefault()
.endRecord();
Run Code Online (Sandbox Code Playgroud)
如何使用逻辑类型标记架构字段,具体如下:https: //avro.apache.org/docs/1.8.1/api/java/org/apache/avro/LogicalTypes.TimestampMillis.html
这是在 Amazon Kinesis Data Analytics Flink 环境中运行的 Flink 1.13.2。
该应用程序在 Kafka 主题上运行。当主题的流量较小时,该应用程序运行良好,当流量较大时,我收到此错误。如何排除故障、调整和修复?
我看到类似的问题,但这在旧版本的 Flink 中显然是一个单独的问题: Apache Flink - WordCount - NoResourceAvailableException
异常跟踪是:
2021-12-30 18:16:45
java.util.concurrent.CompletionException: org.apache.flink.runtime.jobmanager.scheduler.NoResourceAvailableException: Could not acquire the minimum required resources.
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:331)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:346)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:632)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
at org.apache.flink.runtime.jobmaster.slotpool.DeclarativeSlotPoolBridge$PendingRequest.failRequest(DeclarativeSlotPoolBridge.java:535)
at org.apache.flink.runtime.jobmaster.slotpool.DeclarativeSlotPoolBridge.cancelPendingRequests(DeclarativeSlotPoolBridge.java:128)
at org.apache.flink.runtime.jobmaster.slotpool.DeclarativeSlotPoolBridge.failPendingRequests(DeclarativeSlotPoolBridge.java:362)
at org.apache.flink.runtime.jobmaster.slotpool.DeclarativeSlotPoolBridge.notifyNotEnoughResourcesAvailable(DeclarativeSlotPoolBridge.java:351)
at org.apache.flink.runtime.jobmaster.JobMaster.notifyNotEnoughResourcesAvailable(JobMaster.java:824)
at jdk.internal.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcInvocation(AkkaRpcActor.java:301)
at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcMessage(AkkaRpcActor.java:212)
at org.apache.flink.runtime.rpc.akka.FencedAkkaRpcActor.handleRpcMessage(FencedAkkaRpcActor.java:77)
at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleMessage(AkkaRpcActor.java:158)
at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:26)
at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:21)
at scala.PartialFunction.applyOrElse(PartialFunction.scala:123)
at scala.PartialFunction.applyOrElse$(PartialFunction.scala:122)
at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:21)
at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:171) …
Run Code Online (Sandbox Code Playgroud) 作为八度音阶的先决条件,我需要安装veclibfort:
brew install veclibfort
Run Code Online (Sandbox Code Playgroud)
我收到了错误
==> make check
gfortran -o tester -O tester.f90 vecLibFort.o -framework vecLib
make: gfortran: No such file or directory
make: *** [check] Error 1
Run Code Online (Sandbox Code Playgroud)
这个错误听起来像我没有安装gfortran,但我确实如此.如果我跑gfortran -v
:
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/4.8.3/libexec/gcc/x86_64-apple-darwin13.2.0/4.8.3/lto-wrapper
Target: x86_64-apple-darwin13.2.0
Configured with: ../configure --build=x86_64-apple-darwin13.2.0 --(snip)
Thread model: posix
gcc version 4.8.3 (GCC)
Run Code Online (Sandbox Code Playgroud)
这个问题似乎在这里得到解决:
https://github.com/Homebrew/homebrew-science/issues/992
但似乎没有相关的解决方案.
在官方的Spark RDD API中:
https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/rdd/AsyncRDDActions.html
count,collect,foreach和take all都有异步变体返回Future.
为什么折叠,缩小和聚合没有这个异步/未来接口?这看起来非常重要.
我在Mac OS上安装了JDK 9的发行版.
jshell工作得很好,Jigsaw模块支持工作,但没有jlink:
? java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)
这是空的:
find /System/Library/Frameworks/JavaVM.framework/Versions/Current/ -iname jlink\*
Run Code Online (Sandbox Code Playgroud)
供参考:
? ls -l $(which java)
lrwxr-xr-x 1 root wheel 74 Nov 7 2016 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
Run Code Online (Sandbox Code Playgroud) 在现有的 Terraform 目录中:
~ terraform version
Terraform v0.11.11
+ provider.aws v1.51.0
Run Code Online (Sandbox Code Playgroud)
如果我设置了一个新的 Terraform 目录:
~ terraform version
Terraform v0.11.11
+ provider.aws v1.55.0
Run Code Online (Sandbox Code Playgroud)
如何升级我的provider.aws
?如果我设置version = "~> 1.55.0"
在provider "aws"
我的.tf
文件,我得到一个错误:
* provider.aws: no suitable version installed
version requirements: "~> 1.55.0"
versions installed: "1.51.0"
Run Code Online (Sandbox Code Playgroud)
我希望找到一个terraform update
命令或类似的东西。但我找不到那个。
我不应该升级提供程序吗?我需要删除状态,重新运行init
然后refresh
吗?或者,还有更好的方法?
通常,我想做这样的事情,它有效:
echo '{"a": 123, "b": "{\"embedded\": 456}", "c": 789}' | jq '{a, "b2": .b | fromjson, c}'
Run Code Online (Sandbox Code Playgroud)
有效并产生:
{
"a": 123,
"b2": {
"embedded": 456
},
"c": 789
}
Run Code Online (Sandbox Code Playgroud)
有时,字段“b”丢失,在这种情况下,上面的 jq 将出错:
echo '{"a": 123, "c": 789}' | jq '{a, "b2": .b | fromjson, c}'
Run Code Online (Sandbox Code Playgroud)
这给出了一个 null 错误,这是有道理的,因为 b 缺失,所以.b
null 和fromjson
null 上的错误。我想编写我的jq
命令,以便如果b
缺少记录,则不会输出它。我想简单地得到这个:
{
"a": 123,
"c": 789
}
Run Code Online (Sandbox Code Playgroud)
我浏览了jq
参考手册。我无法使用 if/else/end 结构来解决这个问题。我没有看到任何其他可用的空处理函数或语言结构。
java ×3
apache-spark ×2
scala ×2
apache-flink ×1
asynchronous ×1
avro ×1
future ×1
gfortran ×1
homebrew ×1
iso8601 ×1
java-8 ×1
java-9 ×1
java-platform-module-system ×1
jlink ×1
jq ×1
json ×1
macos ×1
terraform ×1
time ×1
try-catch ×1