hdfs下載出現Exception in thread "main" java.lang.NullPointerException
一.從hdfs檔案系統下載檔案到本地檔案系統時Java程式碼。
import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class getfile { public static void main(String[] args) throws Exception{ FileSystem fs=FileSystem.get(new URI("hdfs://192.168.11.12:9000"),new Configuration()); Path src=new Path("/data/wordcount/file1"); Path dst=new Path("D:\\app"); fs.copyToLocalFile(src, dst); fs.copyToLocalFile(false,src, dst,true); } }
二.執行程式錯誤程式碼。
而且下載的檔案會成為 .crc檔案並沒有大小。Exception in thread "main" java.lang.NullPointerException at java.lang.ProcessBuilder.start(ProcessBuilder.java:459) at org.apache.hadoop.util.Shell.runCommand(Shell.java:149) at org.apache.hadoop.util.Shell.run(Shell.java:134) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:286) at org.apache.hadoop.util.Shell.execCommand(Shell.java:354) at org.apache.hadoop.util.Shell.execCommand(Shell.java:337) at org.apache.hadoop.fs.RawLocalFileSystem.execCommand(RawLocalFileSystem.java:481) at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:473) at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:280) at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:372) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:479) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:460) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:367) at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:208) at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:199) at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:142) at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1211) at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1192) ...... .....
三.修改方式。
fs.copyToLocalFile(src, dst);改為fs.copyToLocalFile(false,src,dst,true);
fs.copyToLocalFile)方法在原始碼中的程式碼如下 public void copyToLocalFile(boolean delSrc, Path src, Path dst, boolean useRawLocalFileSystem) throws IOException { Configuration conf = getConf(); FileSystem local = null; if (useRawLocalFileSystem) { local = getLocal(conf).getRawFileSystem(); } else { local = getLocal(conf); } FileUtil.copy(this, src, local, dst, delSrc, conf); }
四.錯誤原因.
在使用copyToLocalFile(Path src, Path dst)方法時可能導致 setPermission檔案本地檔案效驗失敗.
因此使用copyToLocalFile( boolean delSrc,Path src, Path dst,
boolean useRawLocalFileSystem)
boolean delSrc 指是否將原檔案刪除
Path src 指要下載的檔案路徑
Path dst 指將檔案下載到的路徑
boolean useRawLocalFileSystem 是否開啟檔案效驗
五. RawLocalFileSystem檔案
hadoop是一個綜合檔案系統,並不等價於hdfs檔案系統。hadoop集成了眾多的檔案系統, hdfs僅僅是hadoop旗艦級檔案系統。Hadoop的這個特點充分體現了hadoop的優良的可擴充套件性。在hadoop裡,hadoop定義了一個抽象的檔案系統的概念,類:org.apache.hadoop.fs.FileSystm,這個抽象類用來定義hadoop中的一個檔案系統介面,只要某個檔案系統實現了這個介面,就可以作為hadoop支援的檔案系統。
Hadoop LocalFileSystem是客戶端校驗的類。在使用LocalFileSystem寫檔案時,會透明的建立一個.filename.crc的檔案。 校驗檔案大小的位元組數由io.bytes.per.checksum屬性設定,預設是512bytes,即每512位元組就生成一個CRC-32校驗和。.filename.crc檔案會存 io.bytes.per.checksum的資訊。在讀取的時候,會根據此檔案進行校驗。事實上LocalFileSystem是通過繼承ChecksumFileSystem實現校驗的工作。
檔案系統 | URI方案 | Java實現(org.apache.hadoop) | 定義 |
Local | file | fs.LocalFileSystem | 支援有客戶端校驗和本地檔案系統。帶有校驗和的本地系統檔案在fs.RawLocalFileSystem中實現。 |
相關推薦
hdfs下載出現Exception in thread "main" java.lang.NullPointerException
一.從hdfs檔案系統下載檔案到本地檔案系統時Java程式碼。 import java.net.URI; import org.apache.hadoop.conf.Config
hibernate出現Exception in thread "main " java.lang.ExceptionInInitializerError錯誤解決辦法
最近複習了下hibernate的內容,用於準備面試。另外看了下尚學堂的視訊,按照步驟去做了幾個實驗, 但是在這過程中遇到了以下錯誤問題: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found bi
Oozie時出現Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor versi
不多說,直接上乾貨! 問題詳情 [[email protected] oozie-4.1.0-cdh5.5.4]$ bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection [[ema
關於反編譯apk出現Exception in thread "main" java.lang.ClassCastException: ....
在反編譯APK的時候:遇到這種情況 > 正在反編譯Apk... - 失敗:Exception in thread "main" java.lang.ClassCastException: brut.androlib.res.data.value.ResFileVal
eclipse出現Exception in thread "main" java.lang.NoClassDefFoundError
昨天晚上在跑hadoop程式的時候,新建了一個工程然後不知怎麼地就一直出現Exception in thread "main" java.lang.NoClassDefFoundError 錯誤如下: Exception in thread "main" java.lang
java使用類陣列 報錯Exception in thread "main" java.lang.NullPointerException
原始碼如下: Point[] points=new Point[n];//Point是一個類 for(int i=0;i<n;i++) { System.out.print("請輸入x:"); points[i].setX(in.next
連線資料庫連線池 Exception in thread "main" java.lang.NullPointerException
今天測試資料庫連線池發現一直是空指標錯誤。一般都是配置檔案出了問題。找了半天才發現,在沒有密碼的情況下不要加入password=null,估計是沒有加入關鍵字解析的。直接省去不寫就好了 driverClassName=com.mysql.jdbc.Driver
Exception in thread "main" java.lang.NullPointerException問題
Exception in thread "main" java.lang.NullPointerException 該問題多半是由於用到的某個物件只進行了宣告,而沒有初始化,即沒有被new 比如說: 一個類Person,有一個物件p1 宣告物件Person p1; 使用該物
Java報錯異常-----Exception in thread "main" java.lang.NullPointerException
異常提示: Exception in thread "main" java.lang.NullPointerExceptionat java.awt.Container.addImpl(Container.java:1045)at java.awt.Container.ad
Exception in thread "main" java.lang.NullPointerException的問題
問題敘述 出現Exception in thread “main” java.lang.NullPointerException一般是因為指標為空, 也就是說這個時候你要注意你的物件是否已經初始化(new)了 例如 現在我要在Path類上定義一個Box類的陣列
idea運行的時候出現的問題Exception in thread “main” java.lang
ideaidea運行的時候出現的問題Exception in thread “main” java.lang.NoSuchMethodError: scala.collection.immutable.HashSet$這類錯誤主要是環境中運行scala與idea中scala的版本不一致導致的。將他們更換為相同
java編譯中出現了Exception in thread “main" java.lang.UnsupportedClassVersionError
java編譯中出現了Exception in thread “main” java.lang.UnsupportedClassVersionError 起因: StringBuilder不能賦值?不對,錯誤原因是因為下面報錯的log: 接下來,
Exception in thread “main” java.lang.NoSuchMethodError: scala.Predef..conforms()Lscala/Predef$$less$
執行Scala程式,出現如下問題: Exception in thread “main” java.lang.NoSuchMethodError: scala.Predef..conforms()Lscala/Predef$$less$colon$less; at org.apach
【解決】自己編寫Wordcount程式碼上傳叢集上執行時報錯:Exception in thread "main" java.lang.ClassNotFoundException: WordCount
報錯資訊:ClassNotFoundException: WordCount [[email protected] fs_testdir]# hadoop jar /fs_testdir/my
personRDD.toDF Exception in thread "main" java.lang.NoSuchMethodError
scala 版本: 2.10.2 sparkSQL :maven依賴版本 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark
elasticsearch 編寫java程式報錯Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch
java程式啟動報錯: Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/plugins/NetworkPlugin ERROR StatusLogger Log4j2
Exception in thread "main" java.lang.ClassNotFoundException: WordCount
出現這個問題主要是呼叫的問題,沒有加入包./bin/hadoop jar FirstJar/WordCount.jar WordCount input output改成如下的樣子就可以了./bin/hadoop jar FirstJar/WordCount.jar cn.edu.ruc.cloud
hive錯誤:Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Permission denied
用不同使用者去登入hive 可能會報如下錯誤: Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Permission denied at org.apa
Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.driver at java.base/jdk
Eclipse下javal連資料庫一直報這個錯。由於我用的是新版的MySQL,所以經常遇見些奇奇怪怪的錯…… 坑在這裡: 錯誤程式碼:Class.forName("com.mysql.jdbc.driver"); Driver要大寫!!! 正確的程式碼: pack
spark submit提交任務報錯Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/stream
1.問題描述 提交spark任務: bin/spark-submit --master local[2] \ --class _0924MoocProject.ImoocStatStreamingApp_product \ /opt/datas/project/scala