【发布时间】:2018-03-07 17:55:10
【问题描述】:
我现在已经找了一段时间了,发现了很多过去的损坏示例和链接,但是我有一个 2 GB 的 json 数据文件,我需要逐行处理,运行大量每行代码,并将重新格式化的数据保存到集群中。
我一直在尝试在 Spark 2.0/PySpark 中执行此操作,但运气不佳。我可以在较小的文件上执行此操作,但在我的实际文件上,我的 director 耗尽了堆内存。
当我尝试分解文件时,我收到了此处列出的错误 (Spark __getnewargs__ error),但原因明显不同,因为我没有引用列。
我现在使用的是带有 Hortonworks 的 CentOS6,单机集群。实际上,我更多的是寻找“我应该做什么”,而不仅仅是如何去做。我知道 Spark可以做到这一点,但如果有更好的方法,我也很乐意探索。
【问题讨论】:
-
您只有 2 GB?那你为什么需要Hadoop?注意:根据定义,单个节点不是“集群”。您为 Spark 任务分配了多少内存?默认只有 2GB,这就解释了它为什么会耗尽内存
-
一个 2GB 的文件。还有相当多的存储在那里。我尝试为该任务分配多达 20GB 的空间,但它的堆空间不足,所以没有帮助。
-
你想用 JSON 文件实现什么?
-
很多事情,但我现在遇到的问题是,当我将文件拆分成更易于管理的块时,我什至无法迭代文件。但最终,我正在阅读 Json,进行一些计算和评估,然后,对于某些标准,我将该行转换为 CSV 平面文件。
-
Spark 应该可以正常工作,但对于一个适合 10 美元闪存驱动器的相对中等大小的文件来说,它是多余的。驱动程序内存和执行程序内存之间存在差异。你在设置哪个?单个节点上有 20GB 可用空间?你见过shapeshed.com/jq-json 吗?甚至这个aadrake.com/…
标签: hadoop apache-spark