我试图使用scala和以下代码从spark流数据帧中提取值:
var txs = spark.readStream
.format("kafka") .option("kafka.bootstrap.servers",KAFKABS)
.option("subscribe", "txs")
.load()
txs = txs.selectExpr("CAST(value AS STRING)")
val schema = StructType(Seq(
StructField("from",StringType,true),
StructField("to", StringType, true),
StructField("timestamp", TimestampType, true),
StructField("hash", StringType, true),
StructField("value", StringType, true)
))
txs = txs.selectExpr("cast (value as string) as json")
.select(from_json($"json", schema).as("data"))
.select("data.*")
.selectExpr("from","to","cast(timestamp as timestamp) as timestamp","hash","value")
val newDataFrame = txs
.flatMap(row => {
val to = row.getString(0)
val from = row.getString(1)
// val timestamp = row.getTimestamp??
//do stuff
})
我想知道是否有一个等效的时间戳类型化get方法?让我更加困惑的是,在我为结构化流定义的SQL类型和通过flatMap函数访问变量的实际类型之间似乎存在某种隐藏映射(至少对我来说是隐藏的)。我看了看医生,事实确实如此。根据文件:
返回位置i处的值。如果值为null,则返回null。以下是Spark SQL类型和返回类型之间的映射:
布尔型-
日期类型-
BinaryType-
考虑到这一点,我本以为这个映射会更正式地作为它实现的接口被烘焙到Row
类中,但显然情况并非如此:(似乎在TimestampType/java.sql.Timestamp的情况下,我必须放弃我的时间戳类型以获取其他内容?有人请解释为什么我错了!我现在只使用scala和火花3-4个月。
-保罗
您已经正确地推断出时间戳类型列的Scala类型是java。sql。时间戳。
从V1.5.0开始。org.apache.spark.sql.Row
有一个getTimestamp(i: Int)
方法,因此您可以调用它并获取java.sql.Timestamp
:
val timestamp = row.getTimestamp(1)
即使使用早期版本,也没有必要放弃这种类型,只需将getAs[T](i:Int)与java一起使用即可。sql。时间戳:
val timestamp = row.getAs[java.sql.Timestamp](2)
// OR:
val timestamp = row.getAs[java.sql.Timestamp]("timestamp")
我正在使用Repast Simphony在Eclipse中使用java构建一个模拟。模拟有一个在“地理”上下文中运行的代理类。 代理还可以在其他环境中移动,包括“网格”和“空间”。这些是2D投影,“地理”背景是GIS投影。 “网格”包和“地理”包都附带了一组对象/方法。网格包中的一个称为GridcellNgh,它在特定网格点周围创建一个摩尔邻域或“过滤器”。有人知道有一个对象可以执行与GridCe
问题内容: 从Java世界进入C#,是否有等效的HashMap?如果没有,您会推荐什么? 问题答案: 可能是最接近的。实现接口(类似于Java的接口)。 您应该注意一些明显的区别: 添加/获取项目 Java的HashMap具有用于设置/获取项目的和方法 C#的词典使用索引来设置/获取项目 键 Java 允许空键 如果您尝试添加空键,.NET会引发 添加重复密钥 Java 将用新值替换现有值。 如果
问题内容: 是否有等效于python for Java中的“ dir”或提供类似功能(即,对象和类的属性以信息字符串形式输出)的库? 这个问题类似于clojure的这个问题,并且可能与此问题类似,与Java反射有关,这似乎是一个更复杂但相似的话题。 问题答案: 没有什么在完成标准库的 究竟 是什么,但你可以得到使用相同的信息。具体来说,有关发现类成员的文档中说明了调查和发现类成员的方法。使用该AP
问题内容: 我正在使用Java进行编译器设计项目。进行了词法分析(使用jflex),我想知道哪种yacc类工具最适合(最有效,最易用等)进行语法分析,为什么这样做。 问题答案: 如果您特别想要类似YACC的行为(表驱动),那么我所知道的唯一一个就是CUP。 在Java世界中,似乎有更多的人倾向于ANTLR或JavaCC之类的递归下降解析器。 而且效率很少是选择解析器生成器的原因。
问题内容: 是否有与.NET的App.Config等效的Java? 如果没有,可以使用标准方法来保留应用程序设置,以便在发布应用程序后可以对其进行更改? 问题答案: 对于WebApp,可以使用web.xml来存储应用程序设置。 除此之外,您可以使用Properties类来读取和写入属性文件。 您可能还需要查看Preferences类,该类用于读取和写入系统和用户首选项。这是一个抽象类,但是您可以使
问题内容: 在C语言中,printf()语句允许在参数列表中提供精度长度。 星号分别替换为第一和第二个值。 我正在寻找Android / Java中的同等产品;String.format()引发异常。 编辑:谢谢,@Tenner; 它确实有效。 问题答案: 我用 有点难看(并且字符串连接使其性能不佳),但是它可以工作。