Программа grep-a-like ack
имеет параметр -1
, который останавливается в первом совпадении, найденном где угодно. Он поддерживает -m 1
, на который ссылается @mvp. Я помещал его туда, потому что, если я ищу большое дерево исходного кода, чтобы найти то, что я знаю, существует только в одном файле, нет необходимости его находить и ему нужно нажать Ctrl-C.
Я не уверен, что это ошибка или нет, но микширование динамически типизировано Row
, классы case и явная схема не имеют большого смысла. Либо используйте Rows
и схему:
import collection.mutable._
import collection.JavaConverters._
spark.createDataFrame(ArrayBuffer(Row(Row(0L, 0))).asJava, SCHEMA)
, либо классы case:
import spark.implicits._
Seq(Tuple1(Timestamp(0L, 0))).toDF("created_at")
В противном случае вы выполняете одно и то же задание дважды.
Примечание:
Если вы хотите выразить, что поля могут быть нулевыми, вы используете Options
. Например,
case class Record(created_at: Option[Timestamp])
case class Timestamp(seconds: Long, nanos: Option[Int])
Seq(Record(Some(Timestamp(0L, Some(0))))).toDF
будет генерировать схему, где created_at
и created_at.milliseconds
могут быть NULL
, но created_at.seconds
необходимо установить, если created_at
не NULL
.