在 PySpark 2.0 中读取序列文件

2023-12-03

我有一个序列文件,其值如下所示

(string_value, json_value)

我不关心字符串值。

在 Scala 中我可以通过以下方式读取文件

val reader = sc.sequenceFile[String, String]("/path...")
val data = reader.map{case (x, y) => (y.toString)}
val jsondata = spark.read.json(data)

我很难将其转换为 PySpark。我尝试过使用

reader= sc.sequenceFile("/path","org.apache.hadoop.io.Text", "org.apache.hadoop.io.Text")
data = reader.map(lambda x,y: str(y))
jsondata = spark.read.json(data)

这些错误很神秘,但如果有帮助的话我可以提供它们。我的问题是,在 pySpark2 中读取这些序列文件的正确语法是什么?

我认为我没有正确地将数组元素转换为字符串。如果我做一些简单的事情,比如

m = sc.parallelize([(1, 2), (3, 4)])
m.map(lambda x,y: y.toString).collect()

or

m = sc.parallelize([(1, 2), (3, 4)])
m.map(lambda x,y: str(y)).collect()

Thanks!


您的代码的根本问题是您使用的函数。函数传递给map应该采用一个参数。使用以下任一方法:

reader.map(lambda x: x[1])

or just:

reader.values()

只要keyClass and valueClass匹配数据,这应该是您在这里需要的全部内容,并且不需要额外的类型转换(这是由内部处理的)sequenceFile)。用 Scala 写:

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.1.0
      /_/

Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_111)
Type in expressions to have them evaluated.
Type :help for more information.
scala> :paste
// Entering paste mode (ctrl-D to finish)

sc
  .parallelize(Seq(
    ("foo", """{"foo": 1}"""), ("bar", """{"bar": 2}""")))
  .saveAsSequenceFile("example")

// Exiting paste mode, now interpreting.

用 Python 阅读:

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.1.0
      /_/

Using Python version 3.5.1 (default, Dec  7 2015 11:16:01)
SparkSession available as 'spark'.
In [1]: Text = "org.apache.hadoop.io.Text"

In [2]: (sc
   ...:     .sequenceFile("example", Text, Text)
   ...:     .values()  
   ...:     .first())
Out[2]: '{"bar": 2}'

Note:

旧版 Python 版本支持元组参数解包:

reader.map(lambda (_, v): v)

不要使用它对于应该向前兼容的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PySpark 2.0 中读取序列文件 的相关文章

随机推荐

  • 在 Firefox 中使用 HTML5 音频播放 mp3 Shoutcast 流?

    我正在尝试使用 HTML5 音频播放 mp3shoutcast 流广播电台 我认为这不相关 但无论如何 这里是代码 var player new Audio player autobuffer true player src http 17
  • Sql Developer 上出现“IO 错误:网络适配器无法建立连接”问题的原因是什么?

    我建立了连接到数据库服务器 其他机器 的连接 然后我发现 执行请求的操作时遇到错误 IO 错误 网络适配器无法建立连接 供应商代码 17002 请查看下面 URL 中的图片 我尝试建立连接但无法访问 但我的团队可以访问它 我的朋友使用 TN
  • 将任意大数转换为基数 256

    我有一个号码非常大 长度可能达到50位 我将其作为字符串输入 但是 我需要对其执行操作 所以 我需要将它们转换为适当的基数 比如说 256 这样做的最佳算法是什么 多精度算术 又名bignums 是一个困难的主题 好的算法是不直观的 有关于
  • 如何使用Struts 2在Apache Tomcat应用程序中建立数据库连接

    我想在应用程序级别建立数据库连接 所以我想在web xmlApache Tomcat 服务器的文件 我正在使用 Struts2 MVC 框架开发我们的应用程序 实际上我不想在每个Java 文件上创建数据库连接 如何在应用程序中建立数据库连接
  • Directshow录制/预览问题

    我有一个项目 需要使用 DirectShow 从网络摄像头录制视频 但我需要能够在预览继续运行时停止录制 我正在使用 WPFMediaKit http wpfmediakit codeplex com 问题是 当我录制视频时 暂停功能也会暂
  • EclEmma 代码覆盖率插件和 PowerMockRunner

    我在Eclipse中使用EclEmma插件时遇到了问题 当我使用注释时它不显示代码覆盖率 RunWith通过 PowerMockRunner class 作为一个论点 如果使用 MockitoJUnitRunner class 一切安好 等
  • 如何更改 SwiftUI 中导航栏标题的文本属性?

    最近 我一直在尝试新的 SwiftUI 框架 我确实对该框架的工作原理有基本的了解 但我无法找到更改导航栏标题属性的方法 我使用的是最新的 Xcode 11 beta 5 和相应的 swift swiftUI 版本 我已经尝试过一些事情 我
  • C++\CLI 应用程序加载时崩溃

    我有一个 C 应用程序 它加载大量 C DLL 和一些选定的 C CLI DLL 在其中一台计算机 Windows Server 2003 SP2 上启动时收到错误消息 应用程序无法正确初始化 0xC0000005 单击 确定 终止应用程序
  • 如何在没有秒的情况下格式化 MySQL TIMEDIFF?

    我正在运行这个SELECT陈述 TIMEDIFF NOW posts date modified as time ago 并得到格式的结果02 58 32 最后一组数字 32 是秒数 我怎样才能省略秒 SELECT TIME FORMAT
  • iOS 的 Cordova healthkit 插件函数返回未定义?

    我正在尝试使用科尔多瓦插件健康我正在开发的phonegap应用程序的插件 每当我使用该应用程序时 每个插件都可以工作 但这个插件除外 我正在使用phonegap mac 应用程序在iPhone 6s 上进行测试 我已采取的步骤 安装的插件c
  • 仅在根进程上声明的数组

    特别是在 Fortran 的 MPI 中 仅在根进程上定义数组是否可能并且是一个不错的选择 例如这样的事情 program test implicit none include mpif h all mpi init ierr call m
  • 比较两个字符串并返回差异。 Python 3 [重复]

    这个问题在这里已经有答案了 我的目标是编写一个程序来比较两个字符串并显示前两个不匹配字符之间的差异 例子 str1 dog str2 doc 应该返回 gc 我知道我尝试使用的代码很糟糕 但我希望收到一些提示 这是我解决这个练习的糟糕尝试
  • C#性能分析-如何计算CPU周期?

    这是进行性能分析的有效方法吗 我想要获得纳秒精度并确定类型转换的性能 class PerformanceTest static double last 0 0 static List numericGenericData new List
  • 如何创建 html 输入文本区域,以便可以为某些单词添加下划线或设置其格式?

    我想要一个输入字段 我可以让javascript为输入字段的不同部分设置某些属性 一个简单的例子来演示我想做的事情 假设我想在输入文本区域中的所有咒语单词下划线 因此 当插入新字母时 JavaScript 将检查输入文本区域 并且对于与我的
  • RichtextBox 中的粗体

    我一直在研究我的富文本框 但遇到了一些奇怪的事情 我想将每一行的第一个单词加粗 使用此代码 RichTextBox bold richTextBox1 foreach string line in bold Lines string nam
  • 用于向下钻取图表的自己的后退按钮

    我有一个带有向下钻取数据的饼图 是否可以隐藏默认的后退按钮并从我自己的按钮触发后退功能 是的 这是可能的 只需创建您自己的按钮 然后单击调用chart drillUp 功能 看docs Highcharts v5 和 v6 在 Highch
  • AWS RDS 是否支持 MySQL 作为文档存储

    我能够连接普通的AWS RDS MySQL实例 5 7 16 但是 由于我必须使用 MySQL 作为文档存储 因此我通过安装 mysqlx 插件配置了 MySQL 实例 这是文档存储所需的 此后 我尝试连接同一实例上端口 33060 上的
  • YouTube 嵌入视频开始/停止事件

    我想知道 通过 iframe 嵌入 YouTube 视频是否会暴露某些事件 例如 onStart 或 onStop 您可以在其中指定一些回调 这是处理启动和停止事件的示例 HTML 文件 index html
  • 如何在 Spring Boot 中将 Json 字节数组转换为 AMQP?

    按照此 我有这个代码 Bean open fun messageConverter om ObjectMapper MessageConverter return Jackson2JsonMessageConverter om Bean o
  • 在 PySpark 2.0 中读取序列文件

    我有一个序列文件 其值如下所示 string value json value 我不关心字符串值 在 Scala 中我可以通过以下方式读取文件 val reader sc sequenceFile String String path va