Saya mengikuti tutorial percikan hebat
jadi saya mencoba pada 46m: 00s untuk memuat README.md
tetapi gagal untuk apa yang saya lakukan adalah ini:
$ 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)
bagaimana saya bisa memuat itu README.md
?
scala
apache-spark
Jas
sumber
sumber
Jawaban gonbe luar biasa. Tapi tetap saya ingin menyebutkan bahwa
file:///
=~/../../
, tidak$SPARK_HOME
. Semoga ini bisa menghemat waktu untuk pemula seperti saya.sumber
file:///
adalah folder root dari sistem file seperti yang terlihat oleh JVM yang menjalankan, bukan dua tingkat di atas folder utama. Format URI seperti yang ditentukan dalam RFC 8089 adalahfile://hostname/absolute/path
. Dalam kasus lokal,hostname
komponen (otoritas) kosong.Sementara Spark mendukung pemuatan file dari sistem file lokal, itu mengharuskan file tersedia di jalur yang sama di semua node di cluster Anda.
Beberapa sistem berkas jaringan, seperti NFS, AFS, dan lapisan NFS MapR, diekspos ke pengguna sebagai sistem berkas biasa.
Jika data Anda sudah ada di salah satu sistem ini, Anda dapat menggunakannya sebagai input hanya dengan menentukan file: // path; Spark akan menanganinya selama filesystem dipasang di jalur yang sama pada setiap node. Setiap node harus memiliki jalur yang sama
Jika file Anda belum ada di semua node dalam cluster, Anda dapat memuatnya secara lokal di driver tanpa melalui Spark lalu memanggil parallelize untuk mendistribusikan konten ke pekerja
Berhati-hatilah untuk meletakkan file: // di depan dan gunakan "/" atau "\" sesuai dengan OS.
sumber
Anda hanya perlu menentukan jalur file sebagai "file: /// directory / file"
contoh:
sumber
Perhatian:
Pastikan Anda menjalankan spark dalam mode lokal ketika Anda memuat data dari local (
sc.textFile("file:///path to the file/")
) atau Anda akan mendapatkan kesalahan seperti iniCaused by: java.io.FileNotFoundException: File file:/data/sparkjob/config2.properties does not exist
. Karena pelaksana yang dijalankan pada pekerja yang berbeda tidak akan menemukan file ini di jalur lokalnya.sumber
Jika file terletak di node master Spark Anda (misalnya, jika menggunakan AWS EMR), luncurkan spark-shell dalam mode lokal terlebih dahulu.
Sebagai alternatif, Anda dapat menyalin file ke HDFS dari sistem file lokal terlebih dahulu dan kemudian meluncurkan Spark dalam mode defaultnya (misalnya, YARN jika menggunakan AWS EMR) untuk membaca file secara langsung.
sumber
Saya memiliki file bernama NewsArticle.txt di Desktop saya.
Di Spark, saya mengetik:
Saya perlu mengubah semua karakter \ ke / untuk jalur file.
Untuk menguji apakah itu berhasil, saya mengetik:
Saya menjalankan Windows 7 dan saya belum menginstal Hadoop.
sumber
Ini telah dibahas dalam milis spark, dan silakan merujuk email ini .
Anda harus menggunakan
hadoop fs -put <localsrc> ... <dst>
salin file kehdfs
:sumber
Ini terjadi pada saya dengan Spark 2.3 dengan Hadoop juga diinstal di bawah direktori home pengguna "hadoop". Karena Spark dan Hadoop diinstal di bawah direktori umum yang sama, Spark secara default menganggap skema sebagai
hdfs
, dan mulai mencari file input di bawah hdfs seperti yang ditentukan olehfs.defaultFS
di Hadoop'score-site.xml
. Dalam kasus seperti itu, kita perlu secara eksplisit menentukan skema sebagaifile:///<absoloute path to file>
.sumber
Ini adalah solusi untuk kesalahan ini yang saya dapatkan di cluster Spark yang di-hosting di Azure di cluster windows:
Muat file HVAC.csv mentah, parsing menggunakan fungsi
Kami menggunakan (wasb: ///) untuk mengizinkan Hadoop mengakses file penyimpanan blog biru dan tiga garis miring adalah referensi relatif ke folder wadah node yang sedang berjalan.
Misalnya: Jika jalur untuk file Anda di File Explorer di dasbor cluster Spark adalah:
sflcc1 \ sflccspark1 \ HdiSamples \ SensorSampleData \ hvac
Jadi untuk menggambarkan path tersebut adalah sebagai berikut: sflcc1: adalah nama dari akun penyimpanan tersebut. sflccspark: adalah nama node cluster.
Jadi kita mengacu pada nama node cluster saat ini dengan relatif tiga garis miring.
Semoga ini membantu.
sumber
Jika Anda mencoba membaca bentuk file HDFS. mencoba mengatur jalur di SparkConf
sumber
Anda tidak harus menggunakan sc.textFile (...) untuk mengubah file lokal menjadi dataframe. Salah satu opsinya adalah, membaca file lokal baris demi baris dan kemudian mengubahnya menjadi Set Data Spark. Berikut adalah contoh untuk mesin Windows di Java:
Sekarang Anda dapat menggunakan dataframe
data
dalam kode Anda.sumber
Saya mencoba yang berikut ini dan berhasil dari sistem file lokal saya .. Pada dasarnya percikan dapat membaca dari jalur lokal, HDFS dan AWS S3
sumber
mencoba
sumber
scala> val f = sc.textFile("./README.md") 14/12/04 12:54:33 INFO storage.MemoryStore: ensureFreeSpace(81443) called with curMem=164073, maxMem=278302556 14/12/04 12:54:33 INFO storage.MemoryStore: Block broadcast_1 stored as values in memory (estimated size 79.5 KB, free 265.2 MB) f: org.apache.spark.rdd.RDD[String] = ./README.md MappedRDD[5] 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
pwd
pada bash shellbash-4.1#