我试图根据模式拆分一个大文件.我正在使用awk命令.创建一定数量的文件后,它会出错:打开的文件太多.
命令是:
awk '/pattern here/{i++}{print > "file"i}' /input file
Run Code Online (Sandbox Code Playgroud)
有人能告诉我如何关闭这些文件吗?我试过跟随,但它给出了错误.
awk '/pattern here/{i++}{print > "file"i}' /input file | close("file"i)
Run Code Online (Sandbox Code Playgroud) 我试图将一个字符串转换为long,它会抛出NumberFormatException.我不认为它超出了范围long.
这是要转换的代码,其中count_strng是我想要转换为long的String.trim()功能没有任何区别.
long sum_link = Long.parseLong(count_strng.trim());
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪.
java.lang.NumberFormatException: For input string: "0.003846153846153846"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:441)
at java.lang.Long.parseLong(Long.java:483)
Run Code Online (Sandbox Code Playgroud)
谁知道这里的确切问题是什么?
我是hadoop的新手和地图缩小模型并试图让这些概念正确.
我首先想要得到输入拆分的概念和映射器的数量是正确的.
我正在运行mapreduce wordcount程序,以下是我的问题.
1)如何确定输入分割?我在同一个集群上运行相同的程序,有两个不同大小的输入
file 1 : size 48mb. => i got number of splits:1 in log.
file 2: size 126mb => number of splits : 1
file 2 : size 126mb ( executed in eclipse IDE) => number of splits: 4
Run Code Online (Sandbox Code Playgroud)
不应该是126 MB文件的分割数等于2?因为我已经读过块大小为64 MB.所以它必须创建2个分裂.
2)如何确定地图制作者的数量?我试图通过以下方式获得映射器的数量来理解mapreduce的工作流程.
conf.get("mapred.map.tasks")
Run Code Online (Sandbox Code Playgroud)
它每次返回2.
3)分割数和映射器数之间是否有任何关系?
4)做上面的事情取决于集群?对于伪分布式模式和其他集群是否相同或不同?
谢谢.