在 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 格式