问题
sparkStream程序做词频统计,将结果写入hdfs文件,出现UnsatisifiedLinkError错误,如下所示:。
Caused by: java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSums(IILjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;IILjava/lang/String;JZ)V
at org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSums(Native Method)
at org.apache.hadoop.util.NativeCrc32.verifyChunkedSums(NativeCrc32.java:59)
at org.apache.hadoop.util.DataChecksum.verifyChunkedSums(DataChecksum.java:301)
at
解决方案
方案一
网上搜了很多帖子,说要把hadoop.dll和winutil.exe文件拷贝到C:/Windows/System32目录下。尝试之后问题没有解决。可能遇到问题的情况不一样。方案一被放弃
方案2
编辑程序启动配置:添加vm options `-Djava.library.path=$HADOOP_HOME/lib/native`参数。
在idea中操作,如下所示:
原因:由于$HADOOP_HOME/lib/native源码二进制包下,文件默认是32位,而在window下运行需要64位格式,因此需要在网上寻找网友已编译好的对应版本的64位native包,或者自己自行编译Hadoop源码,也可以得到64位native包。
我的hadoop就是64位的,直接指定`-Djava.library.path=$HADOOP_HOME/lib/native` 告诉程序native文件位置。
参考:https://blog.csdn.net/Coder__CS/article/details/79128222