将Apache Spark 2.2.0结构化流视为:
jsonStream.printSchema()
root
|-- body: binary (nullable = true)
正文中的数据类型为Protocol Buffers v2和嵌套的JSON。看起来像
syntax = "proto2";
message Data {
required string data = 1;
}
message List {
repeated Data entry = 1;
}
如何提取Spark中的数据以“进一步”处理它?
我查看了ScalaPB,但当我在Jupyter中运行代码时,无法将“.proto”代码内联。我也不知道如何将数据帧转换为流上的RDD。正在尝试。rdd因流媒体源而失败。
更新1:我发现了如何使用ScalaPB的控制台工具从protobuf规范生成Scala文件。由于“类型不匹配”,我仍然无法导入它们。
tl; dr编写一个用户定义函数(UDF)将二进制字段(带有JSON的协议)反序列化为JSON。
将序列化的正文
(二进制格式)视为一个表列。暂时忘掉结构化流媒体(以及流媒体数据集)。
那么,让我把这个问题重新表述如下:
如何转换(又名铸)二进制值[这里你的格式]?
有些格式是直接cast
-able的,这使得将二进制文件转换为字符串非常容易,如下所示:
$"body" cast "string"
如果字符串是JSON或unixtime,您可以使用内置的“转换器”,即from_json
或from_unixtime
等函数。
介绍应该给你一个提示,如何进行像你这样的转换。
body中的数据类型为Protocol Buffers v2和嵌套的JSON。
要处理此类字段(protobuf json),您必须编写一个Scala函数,将“有效负载”解码为json,并使用UDF创建一个用户定义函数(UDF):
UDF(f: UDF1[_,_], returType: DataType):用户定义函数将JavaUDF1实例定义为用户定义函数(UDF)。调用者必须指定输出数据类型,并且没有自动输入类型强制。默认情况下,返回的UDF是确定性的。要将其更改为非确定性,请调用APIUserDefedFunction.as非确定性()
。
然后使用像from_json
或get_json_object
这样的函数。
为了简化您的案例,请编写一个单参数函数进行转换,并使用UDF
函数将其包装成一个UDF。
由于流媒体源,尝试. rdd失败。
使用Dataset.foreach或foreach分区。
foreach(f:(T)⇒ Unit):Unit将函数f应用于所有行。
foreach分区(f:(Iterator[T])¶Unit): Unit将函数f应用于此数据集的每个分区。
我正在分析几个堆转储,并对从堆转储获取jvm参数的方法感兴趣。使用eclipse memory analyzer我可以很容易地获得系统属性和类路径,但我想知道是否有方法获得其他参数,如-xms-xmx等。
我有一个字符串。我想从中提取。为此,我正在努力 但是在输出上我得到了。 我怎样才能走出地狱世界。 谢谢
我需要编写一个能够处理CUrl发送的二进制数据的应用程序,例如: 我创建了一个POST处理方法,如下所示: 然而,它似乎没有返回原始的二进制数据。我试着发送一个GZip文件,在经历了Spring之后,它现在是可解压缩的,这让我相信我要么得到了太多的数据,要么得到了太少的数据。 如何解决此问题并获取原始二进制数据?
我有非常大的二进制文件,其中包含y传感器的x个int16数据点,以及包含一些基本信息的头文件。二进制文件被写为每个采样时间的y值,最多x个采样,然后是另一组读数,依此类推。如果我想要所有的数据,我使用的是numpy。fromfile(),它工作得又快又好。然而,如果我只需要传感器数据的子集或特定传感器,我目前有一个可怕的double for循环,使用的是这要花很长时间。在python中有没有其他更
问题内容: 我对Go完全陌生,我试图读取一个二进制文件,一次读取一个字节或几个字节。该文档并没有多大帮助,我找不到任何教程或简单示例(顺便说一句,Google如何给他们的语言提供这样一个难以理解的名称?)。基本上,如何打开文件,然后将一些字节读入缓冲区?有什么建议吗? 问题答案: 要处理文件,该软件包是您的朋友: 在过去的文件是如何打开更多的控制,看到代替(DOC) 。 为了读取文件,有很多方法。
问题内容: 我正在尝试从URLConnection读取二进制文件。当我使用文本文件对其进行测试时,它似乎可以正常工作,但对于二进制文件则不能。发送文件时,我在服务器上使用以下mime类型: 但是到目前为止,似乎没有任何效果。这是我用来接收文件的代码: 问题答案: 我就是这样