그래서 46m : 00s에서로드하려고 README.md
하지만 내가하는 일에 실패하는 것입니다.
$ sudo docker run -i -t -h sandbox sequenceiq/spark:1.1.0 /etc/bootstrap.sh -bash
bash-4.1# cd /usr/local/spark-1.1.0-bin-hadoop2.4
bash-4.1# ls README.md
README.md
bash-4.1# ./bin/spark-shell
scala> val f = sc.textFile("README.md")
14/12/04 12:11:14 INFO storage.MemoryStore: ensureFreeSpace(164073) called with curMem=0, maxMem=278302556
14/12/04 12:11:14 INFO storage.MemoryStore: Block broadcast_0 stored as values in memory (estimated size 160.2 KB, free 265.3 MB)
f: org.apache.spark.rdd.RDD[String] = README.md MappedRDD[1] at textFile at <console>:12
scala> val wc = f.flatMap(l => l.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://sandbox:9000/user/root/README.md
at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:285)
어떻게로드 할 수 README.md
있습니까?
답변
명시 적으로 지정하십시오 sc.textFile("file:///path to the file/")
. Hadoop 환경이 설정된 경우 오류가 발생합니다.
SparkContext.textFile은 내부적으로를 호출 org.apache.hadoop.mapred.FileInputFormat.getSplits
하며 org.apache.hadoop.fs.getDefaultUri
스키마가없는 경우 사용 합니다. 이 메소드는 Hadoop conf의 “fs.defaultFS”매개 변수를 읽습니다. HADOOP_CONF_DIR 환경 변수를 설정하면 매개 변수는 일반적으로 “hdfs : // …”로 설정됩니다. 그렇지 않으면 “file : //”.
답변
gonbe의 대답은 훌륭합니다. 하지만 여전히 나는 그 언급 할 file:///
=을 ~/../../
하지 $SPARK_HOME
. 이것이 저와 같은 newbs를 위해 시간을 절약 할 수 있기를 바랍니다.
답변
Spark는 로컬 파일 시스템에서 파일로드를 지원하지만 클러스터의 모든 노드에서 동일한 경로에서 파일을 사용할 수 있어야합니다.
NFS, AFS 및 MapR의 NFS 계층과 같은 일부 네트워크 파일 시스템은 일반 파일 시스템으로 사용자에게 노출됩니다.
데이터가 이미 이러한 시스템 중 하나에있는 경우 file : // 경로를 지정하여 입력으로 사용할 수 있습니다 . Spark는 파일 시스템이 각 노드의 동일한 경로에 마운트되는 한이를 처리합니다. 모든 노드는 동일한 경로를 가져야합니다.
rdd = sc.textFile("file:///path/to/file")
파일이 클러스터의 모든 노드에없는 경우 Spark를 거치지 않고 드라이버에서 로컬로로드 한 다음 parallelize를 호출하여 콘텐츠를 작업자에게 배포 할 수 있습니다.
file : //을 앞에두고 OS에 따라 “/”또는 “\”를 사용하도록주의하십시오.
답변
파일 경로를 “file : /// directory / file” 로 지정하기 만하면 됩니다.
예:
val textFile = sc.textFile("file:///usr/local/spark/README.md")
답변
주의:
local ( sc.textFile("file:///path to the file/")
) 에서 데이터를로드 할 때 로컬 모드에서 spark를 실행해야합니다. 그렇지 않으면 이와 같은 오류가 발생합니다 Caused by: java.io.FileNotFoundException: File file:/data/sparkjob/config2.properties does not exist
. 다른 워커에서 실행되는 실행자는 로컬 경로에서이 파일을 찾지 못하기 때문입니다.
답변
파일이 Spark 마스터 노드에있는 경우 (예 : AWS EMR을 사용하는 경우) 먼저 로컬 모드에서 spark-shell을 시작합니다.
$ spark-shell --master=local
scala> val df = spark.read.json("file:///usr/lib/spark/examples/src/main/resources/people.json")
df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]
scala> df.show()
+----+-------+
| age| name|
+----+-------+
|null|Michael|
| 30| Andy|
| 19| Justin|
+----+-------+
또는 먼저 로컬 파일 시스템에서 HDFS로 파일을 복사 한 다음 기본 모드 (예 : AWS EMR을 사용하는 경우 YARN)에서 Spark를 시작하여 파일을 직접 읽을 수 있습니다.
$ hdfs dfs -mkdir -p /hdfs/spark/examples
$ hadoop fs -put /usr/lib/spark/examples/src/main/resources/people.json /hdfs/spark/examples
$ hadoop fs -ls /hdfs/spark/examples
Found 1 items
-rw-r--r-- 1 hadoop hadoop 73 2017-05-01 00:49 /hdfs/spark/examples/people.json
$ spark-shell
scala> val df = spark.read.json("/hdfs/spark/examples/people.json")
df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]
scala> df.show()
+----+-------+
| age| name|
+----+-------+
|null|Michael|
| 30| Andy|
| 19| Justin|
+----+-------+
답변
내 데스크톱에 NewsArticle.txt라는 파일이 있습니다.
Spark에서 다음을 입력했습니다.
val textFile= sc.textFile(“file:///C:/Users/582767/Desktop/NewsArticle.txt”)
파일 경로의 모든 \를 / 문자로 변경해야했습니다.
작동하는지 테스트하기 위해 다음을 입력했습니다.
textFile.foreach(println)
Windows 7을 실행 중이며 Hadoop이 설치되어 있지 않습니다.