- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我从 Cloudera quickstart docker 容器上的 Python Spark (v 1.6.0) 开始。我在/user/root/access_log.txt 下的 hdfs 中成功放置了一个 static .txt 文件 (500 mb)。
在 pyspark 中,我尝试使用以下 python 代码行加载文件:
lines = sc.textFile("hdfs://quickstart.cloudera/user/root/access_log.txt")
这没有给我任何错误。但是我发现文件没有完全加载。还有..
lines.max()
虽然 hdfs 实际上具有正确的文件大小,但未给出文件的正确最后一个元素。
这是内存问题吗?我的 docker 设置设置为 3840 MB。我不知道如何解决这个问题。我期待着您的回答。
编辑:
我用以下方法计算数据集中的元素:
lines.count()
令我惊讶的是它是正确的!这应该意味着我的文件已正确加载。但问题仍然存在,为什么 .max() 语句没有返回正确的元素。
这与不同的任务有关吗?
编辑 2:.txt 文件中的一些示例行
10.190.174.142 - - [03/Dec/2011:13:28:10 -0800] "GET /images/filmpics/0000/2229/GOEMON-NUKI-000163.jpg HTTP/1.1" 200 184976
10.190.174.142 - - [03/Dec/2011:13:28:11 -0800] "GET /images/filmmediablock/360/GOEMON-NUKI-000163.jpg HTTP/1.1" 200 60117
10.190.174.142 - - [03/Dec/2011:13:28:10 -0800] "GET /images/filmmediablock/360/Chacha.jpg HTTP/1.1" 200 109379
10.190.174.142 - - [03/Dec/2011:13:28:11 -0800] "GET /images/filmmediablock/360/GOEMON-NUKI-000159.jpg HTTP/1.1" 200 161657
最佳答案
一般来说,max
不应返回(...) 最后一个元素。在某些情况下,如果日志文件使用的格式强制执行字典顺序,并且您对内容很幸运,否则它就不会发生。由于您的数据以 IP 地址为前缀并使用不友好(例如 ISO 8601)时间戳格式,因此获取最后一个元素不是您可以期望的。
找到最后一个元素的一种方法是包含索引:
from operator import itemgetter
(rdd
.zipWithIndex() # Add line number to get (line, no)
.max(key=itemgetter(1))[0]) # Compare elements using index
有点不同的方法是为每个分区找到最后一个元素,然后从这些元素中找到最后一个。
from functools import reduce
rdd.mapPartitions(lambda part: reduce(lambda _, x: [x], part, [])).collect()[-1]
或者如果分区数很大:
(rdd
.mapPartitionsWithIndex(
lambda i, part: reduce(lambda _, x: [(i, x)], part, []))
.max()[1]) # Take max using tuple ordering
关于python - Pyspark sc.textFile() 没有完全加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46796108/
我正在尝试从写入文件的路径读取文件。我正在关注文档,因此我在使用以下代码行: val data = sc.textFile(PATH) 这给出了编译错误: 找不到:值sc。 我找到了涉及应在终端中给
我正在研究凯撒密码,我的代码已基本完成,但我在从文本文件 (txt) 读取句子、将其存储在数组中、解码并再次将其存储在文本文件中时遇到问题。 到目前为止,我已经成功打开文本文件,逐行读取它,并将其显示
我是 JS 的初学者,需要一些帮助。我有一个如下所示的文本文件: JOBID,NAME,USER,NODELIST,CPUS,STATE,REASON 2527,_DP-2-Q-095-84-1-50
我运行一个方法,有三个部分,第 1 部分和第 3 部分都是“读取文本文件”, 第二部分是将字符串保存到文本文件, // The Save Path is the text file's Path, u
我试图弄清楚在选择多个感兴趣的文件时我可以将这个命令推到什么程度。例如,我使用以下通配符来选取多个目录中感兴趣的所有文件,但我想使用正则表达式等来限制目录名称的长度。 lines = sc.textF
我试图深入理解 textFile 方法,但我认为我的缺乏 Hadoop 知识让我退缩了。让我摆出我的理解,也许你可以纠正任何不正确的地方 当 sc.textFile(path) 被调用时,然后使用 d
我有一个相当大的文本文件,我想将其转换为 SequenceFile。不幸的是,该文件由 Python 代码组成,逻辑行跨越多个物理行。例如, 打印“Blah Blah\ ...等等等等" 每条逻辑行都
我尝试使用以下代码加载文件: textdata = sc.textfile('hdfs://localhost:9000/file.txt') 错误信息: AttributeError: 'Spark
我了解textFile的基础理论为每个文件生成分区,而 wholeTextFiles生成一个pair值的RDD,其中key是每个文件的路径,value是每个文件的内容。 现在,从技术的角度来看,两者之
我尝试加载本地文件,如下所示 File = sc.textFile('file:///D:/Python/files/tit.csv') File.count() 完整回溯 IllegalArgume
我的 Ionic 应用程序中有一个文本输入,在同一范围内有 2 个按钮。第一个按钮用于进行搜索,第二个按钮用于清除文本输入。当我点击清除按钮时,我看到了奇怪的行为,文本输入被清除并且键盘重新出现但文本
以下是我的代码,但一次不能处理超过 500 行。 需要在行尾加一个,,同时进行检测。我目前正在做的是将它们分成 2 个不同的文本框,然后通过复制粘贴保存我需要的文本框,但如果文件太大,应用程序似乎会挂
我想详细了解 sc.textfile 的工作原理。 我在 SparkContext.scala 中找到了文本文件源代码,但它们包含很多关于调度程序、阶段和提交的任务的信息。我想要的是sc.textfi
问题 如何使用sc.textFile从本地文件系统加载文件到Spark?我需要更改任何 -env 变量吗?此外,当我在未安装 Hadoop 的 Windows 上尝试相同操作时,我遇到了同样的错误。
我从 Cloudera quickstart docker 容器上的 Python Spark (v 1.6.0) 开始。我在/user/root/access_log.txt 下的 hdfs 中成功
在 spark 中,我了解如何使用 wholeTextFiles 和 textFiles,但我不确定何时使用哪个。这是我目前所知道的: 处理不按行分割的文件时,应使用wholeTextFiles,否则
SparkContext textFile 似乎只希望文件出现在给定的目录位置 - 它也没有 (a) 递归或 (b) 甚至 support 目录(尝试将目录读取为文件) 关于如何构建递归的任何建议 -
I am currently utilizing the UNLOAD feature in AWS Athena, where I query something like:我目前正在使用AW
说如果我这样做,如下所示。 val rdd = sc.textFile("someFile.txt") val rddWithLines = rdd.zipWithIndex zipWithIndex
我试图在文件中使用 Apache spark 过滤掉特定文件的日期到 RDD 函数 sc.textFile() . 我尝试执行以下操作: sc.textFile("/user/Orders/20150
我是一名优秀的程序员,十分优秀!