【发布时间】:2018-03-29 11:55:59
【问题描述】:
我从 Cloudera 快速入门 docker 容器上的 Python Spark (v 1.6.0) 开始。 我成功地将 static .txt 文件 (500 mb) 放在 /user/root/access_log.txt 下的 hdfs 中。
在 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
【问题讨论】:
-
嗨,迈克,文件是静态的吗?常规日志文件通常会随着最新事件不断更新。这可能是读数与日志不匹配的原因。
-
好问题,但文件是静态的 :)
标签: python hadoop apache-spark pyspark cloudera