[HADOOP] Spark를 사용하여 HDFS에서 파일을 읽을 수 없습니다.
HADOOPSpark를 사용하여 HDFS에서 파일을 읽을 수 없습니다.
cloudera 관리자를 사용하여 cloudera CDH 5를 설치했습니다.
나는 쉽게 할 수있다.
hadoop fs -ls /input/war-and-peace.txt
hadoop fs -cat /input/war-and-peace.txt
이 위 명령은 콘솔에 전체 txt 파일을 인쇄합니다.
지금 나는 불꽃 껍질을 시작하고 말한다.
val textFile = sc.textFile("hdfs://input/war-and-peace.txt")
textFile.count
이제 오류가 발생했습니다.
sc와 같은 컨텍스트를 사용할 수 있습니다.
scala> val textFile = sc.textFile("hdfs://input/war-and-peace.txt")
2014-12-14 15:14:57,874 INFO [main] storage.MemoryStore (Logging.scala:logInfo(59)) - ensureFreeSpace(177621) called with curMem=0, maxMem=278302556
2014-12-14 15:14:57,877 INFO [main] storage.MemoryStore (Logging.scala:logInfo(59)) - Block broadcast_0 stored as values in memory (estimated size 173.5 KB, free 265.2 MB)
textFile: org.apache.spark.rdd.RDD[String] = hdfs://input/war-and-peace.txt MappedRDD[1] at textFile at <console>:12
scala> textFile.count
2014-12-14 15:15:21,791 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 0 time(s); maxRetries=45
2014-12-14 15:15:41,905 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 1 time(s); maxRetries=45
2014-12-14 15:16:01,925 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 2 time(s); maxRetries=45
2014-12-14 15:16:21,983 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 3 time(s); maxRetries=45
2014-12-14 15:16:42,001 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 4 time(s); maxRetries=45
2014-12-14 15:17:02,062 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 5 time(s); maxRetries=45
2014-12-14 15:17:22,082 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 6 time(s); maxRetries=45
2014-12-14 15:17:42,116 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 7 time(s); maxRetries=45
2014-12-14 15:18:02,138 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 8 time(s); maxRetries=45
2014-12-14 15:18:22,298 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 9 time(s); maxRetries=45
2014-12-14 15:18:42,319 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 10 time(s); maxRetries=45
2014-12-14 15:19:02,354 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 11 time(s); maxRetries=45
2014-12-14 15:19:22,373 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 12 time(s); maxRetries=45
2014-12-14 15:19:42,424 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 13 time(s); maxRetries=45
2014-12-14 15:20:02,446 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 14 time(s); maxRetries=45
2014-12-14 15:20:22,512 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 15 time(s); maxRetries=45
2014-12-14 15:20:42,515 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 16 time(s); maxRetries=45
2014-12-14 15:21:02,550 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 17 time(s); maxRetries=45
2014-12-14 15:21:22,558 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 18 time(s); maxRetries=45
2014-12-14 15:21:42,683 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 19 time(s); maxRetries=45
2014-12-14 15:22:02,702 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 20 time(s); maxRetries=45
2014-12-14 15:22:22,832 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 21 time(s); maxRetries=45
2014-12-14 15:22:42,852 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 22 time(s); maxRetries=45
2014-12-14 15:23:02,974 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 23 time(s); maxRetries=45
2014-12-14 15:23:22,995 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 24 time(s); maxRetries=45
2014-12-14 15:23:43,109 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 25 time(s); maxRetries=45
2014-12-14 15:24:03,128 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 26 time(s); maxRetries=45
2014-12-14 15:24:23,250 INFO [main] ipc.Client (Client.java:handleConnectionTimeout(814)) - Retrying connect to server: input/92.242.140.21:8020. Already tried 27 time(s); maxRetries=45
java.net.ConnectException: Call From dn1home/192.168.1.21 to input:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:783)
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:730)
at org.apache.hadoop.ipc.Client.call(Client.java:1415)
왜이 오류가 발생 했습니까? hadoop 명령을 사용하여 동일한 파일을 읽을 수 있습니까?
해결법
-
==============================
1.여기에 해결책이있다.
여기에 해결책이있다.
sc.textFile("hdfs://nn1home:8020/input/war-and-peace.txt")
nn1home : 8020을 어떻게 찾았습니까?
core-site.xml 파일을 검색하고 xml 요소 fs.defaultFS를 찾으십시오.
-
==============================
2.sc.textFile ( "hdfs : // ...")을 사용하려면 "nn1home : 8020 / .."과 같이 전체 경로 (절대 경로)를 지정해야합니다.
sc.textFile ( "hdfs : // ...")을 사용하려면 "nn1home : 8020 / .."과 같이 전체 경로 (절대 경로)를 지정해야합니다.
간단하게 만들려면 sc.textFile ( "hdfs : /input/war-and-peace.txt")을 사용하십시오.
그건 단지 하나 /
-
==============================
3.이것은 작동 할 것이다 :
이것은 작동 할 것이다 :
val textFile = sc.textFile("hdfs://localhost:9000/user/input.txt")
여기서 hadoop core-site.xml 설정 파일의 fs.defaultFS 매개 변수 값에서 localhost : 9000을 가져올 수 있습니다.
-
==============================
4.적절한 URL 문자열을 전달하지 않습니다.
적절한 URL 문자열을 전달하지 않습니다.
마지막으로 URL은 다음과 같아야합니다.
hdfs://localhost:54310/input/war-and-peace.txt
-
==============================
5.CDH5도 사용하고 있습니다. 나에게 완전한 경로 i, e "hdfs : // nn1home : 8020"은 이상한 이유로 작동하지 않는다. 대부분의 예제는 이와 같은 경로를 보여줍니다.
CDH5도 사용하고 있습니다. 나에게 완전한 경로 i, e "hdfs : // nn1home : 8020"은 이상한 이유로 작동하지 않는다. 대부분의 예제는 이와 같은 경로를 보여줍니다.
나는 다음과 같은 명령을 사용했다.
val textFile=sc.textFile("hdfs:/input1/Card_History2016_3rdFloor.csv")
위의 명령 중 o / p :
textFile: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[1] at textFile at <console>:22 textFile.count res1: Long = 58973
그리고 이것은 나를 위해 잘 작동합니다.
-
==============================
6.이것은 나를 위해 일했다.
이것은 나를 위해 일했다.
logFile = "hdfs://localhost:9000/sampledata/sample.txt"
-
==============================
7.spark-env.sh에 설정된 HADOOP_HOME을 사용하여 spark를 시작한 경우 spark는 hdfs 구성 파일을 찾을 위치를 알 수 있습니다.
spark-env.sh에 설정된 HADOOP_HOME을 사용하여 spark를 시작한 경우 spark는 hdfs 구성 파일을 찾을 위치를 알 수 있습니다.
이 경우 spark는 이미 namenode / datanode의 위치를 알고 있으며 아래에서만 hdfs 파일에 액세스 할 수 있습니다.
sc.textFie("/myhdfsdirectory/myfiletoprocess.txt")
아래와 같이 myhdfs 디렉토리를 만들 수 있습니다.
hdfs dfs -mkdir /myhdfsdirectory
로컬 파일 시스템에서 다음 명령을 사용하여 myfiletoprocess.txt를 hdfs 디렉토리로 이동할 수 있습니다.
hdfs dfs -copyFromLocal mylocalfile /myhdfsdirectory/myfiletoprocess.txt
-
==============================
8.
val conf = new SparkConf().setMaster("local[*]").setAppName("HDFSFileReader") conf.set("fs.defaultFS", "hdfs://hostname:9000") val sc = new SparkContext(conf) val data = sc.textFile("hdfs://hostname:9000/hdfspath/") data.saveAsTextFile("C:\\dummy\")
위의 코드는 디렉토리에서 모든 hdfs 파일을 읽고 c : // dummy 폴더에 로컬로 저장합니다.
-
==============================
9.파일 경로 또는 URL 및 hdfs 포트의 문제 일 수 있습니다.
파일 경로 또는 URL 및 hdfs 포트의 문제 일 수 있습니다.
해결책: 먼저 위치 $ HADOOP_HOME / etc / hadoop에서 core-site.xml 파일을 열고 속성 fs.defaultFS의 값을 확인하십시오. 값이 hdfs : // localhost : 9000이고 hdfs의 파일 위치가 /home/usr/abc/fileName.txt라고 가정 해 봅시다. 그런 다음 파일 URL은 다음과 같습니다. hdfs : // localhost : 9000 / home / usr / abc / fileName.txt 그리고 다음 명령을 사용하여 hdfs에서 파일을 읽습니다.
var result= scontext.textFile("hdfs://localhost:9000/home/usr/abc/fileName.txt", 2)
from https://stackoverflow.com/questions/27478096/cannot-read-a-file-from-hdfs-using-spark by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HDFS Java의 기존 파일에 데이터 추가 (0) | 2019.06.01 |
---|---|
[HADOOP] hadoop hdfs에있는 디렉토리와 서브 디렉토리에있는 모든 파일을 나열하는 법 (0) | 2019.06.01 |
[HADOOP] Hadoop 데이터 노드가 NameNode를 찾을 수 없습니다. (0) | 2019.06.01 |
[HADOOP] java.lang.RuntimeException : org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient를 인스턴스화 할 수 없습니다. (0) | 2019.06.01 |
[HADOOP] Hadoop HDFS에 이미지 / 비디오 저장 (0) | 2019.06.01 |