在 pyspark 中操作 .txt 文件数据并更改数据类型

Posted

技术标签:

【中文标题】在 pyspark 中操作 .txt 文件数据并更改数据类型【英文标题】:manipulating .txt file data in pyspark and changing the datatype 【发布时间】:2017-12-02 10:04:57 【问题描述】:

我是 IT 领域的新手。我正在尝试使用 python 在 spark shell (pyspark) 上执行简单的功能。该文件采用.txt 格式,其中只有数字。我用这条线上传了它

numbers_rdd = sc.textFile("/users/hadoop/numbers.txt")

我尝试使用

求平均值
numbers_rdd.mean()

不过,the output was this

我相信这是因为我需要将文本文件中的数据从字符串转换为数字,但我不确定。请告知如何进行。

numbers_rdd.take(5) output

【问题讨论】:

能否显示numbers_rdd.take(5)的结果 我在原帖里上传了 【参考方案1】:

您正在从文本文件中加载数字,其中每一行数字都在不同的 rdd 元素中,所以:

拆分每一行,转换为 int 并将结果列表展平,这样您就可以将每个数字作为一个单独的元素:

numbers_rdd.flatMap(lambda x: [int(y) for y in x.split()]).mean()

【讨论】:

它有效!我打算试试这个 numbers_rdd.map(lambda x: x.split('\t')).\ map(lambda y: (int(y[0]), float(y[2]), int(y [1]))) 但是由于我的 virtualbox 存在一些问题,我似乎无法进入 int(y[9])。会这样吗? 如果您知道拆分后元素的确切数量,您可以单独转换它们,是的。但是你必须对结果进行平面映射,否则文件中的每一行都会有一个数字元组,而不是单独的数字。

以上是关于在 pyspark 中操作 .txt 文件数据并更改数据类型的主要内容,如果未能解决你的问题,请参考以下文章

PySpark 从目录中读取多个 txt 文件为 json 格式

Pyspark 合并两个大文本文件

Linux下文件的基本操作

删除 RDD、Pyspark 中的停用词

如何使用 PySpark 在桌面本地文件夹的目录中执行文件(pdf、docs、txt、xls)的并行处理?

pyspark 学习 Tips