java.lang.ClassNotFoundException: org.apache.spark.sql.sources.v2.DataSourceV2 untuk Spark 3.0.0

2
Scott Hsieh 2020-07-29 08:14.

Singkat

Jalur apa yang mungkin dapat membuat saya memproses data dengan pyspark 3.0.0 dengan sukses dari pipinstalasi murni , yah, setidaknya memuat data tanpa menurunkan versi Spark?

Ketika saya mencoba memuat kumpulan data dari parquetdan csv, saya akan mendapatkan pesan pengecualian saat konten di bawah Pesan Pengecualian ditampilkan. Inisialisasi sesi Spark baik-baik saja, namun ketika saya ingin memuat set data, itu salah.

Beberapa informasi

  • Java: openjdk 11
  • Python: 3.8.5
  • Mode: mode lokal
  • Sistem Operasi: Ubuntu 16.04.6 LTS
  • Catatan:
    1. Saya dieksekusi python3.8 -m pip install pysparkuntuk menginstal Spark.
    2. Ketika saya mencari toples spark-sql_2.12-3.0.0.jar(yang berada di bawah jalur paket situs Python, yaitu, ~/.local/lib/python3.8/site-packages/pyspark/jarsdalam kasus saya), tidak ada di v2bawah spark.sql.sources, yang paling mirip yang saya temukan adalah antarmuka yang disebut di DatSourceRegisterbawah paket yang sama.
    3. Pertanyaan paling mirip yang saya temukan di Stackoverflow adalah Streaming terstruktur PySpark + Kesalahan Kafka (Disebabkan oleh: java.lang.ClassNotFoundException: org.apache.spark.sql.sources.v2.StreamWriteSupport) di mana menurunkan versi Spark disarankan di seluruh informasi tentang halaman itu.

Pesan Pengecualian

Py4JJavaError: An error occurred while calling o94.csv.
: java.lang.NoClassDefFoundError: org/apache/spark/sql/sources/v2/DataSourceV2
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:575) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1209)
    at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1220) at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
    at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299) at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
    at scala.collection.convert.Wrappers$JIteratorWrapper.hasNext(Wrappers.scala:43) at scala.collection.Iterator.foreach(Iterator.scala:941) at scala.collection.Iterator.foreach$(Iterator.scala:941)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1429)
    at scala.collection.IterableLike.foreach(IterableLike.scala:74)
    at scala.collection.IterableLike.foreach$(IterableLike.scala:73) at scala.collection.AbstractIterable.foreach(Iterable.scala:56) at scala.collection.TraversableLike.filterImpl(TraversableLike.scala:255) at scala.collection.TraversableLike.filterImpl$(TraversableLike.scala:249)
    at scala.collection.AbstractTraversable.filterImpl(Traversable.scala:108)
    at scala.collection.TraversableLike.filter(TraversableLike.scala:347)
    at scala.collection.TraversableLike.filter$(TraversableLike.scala:347) at scala.collection.AbstractTraversable.filter(Traversable.scala:108) at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:644)
    at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSourceV2(DataSource.scala:728) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:230) at org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:705) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) at py4j.Gateway.invoke(Gateway.java:282) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:238) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.sources.v2.DataSourceV2 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 45 more

2 answers

0
bricard 2020-09-02 03:59.

Saya memiliki masalah yang sama dengan percikan 3 dan akhirnya menemukan penyebabnya. Saya termasuk botol khusus yang mengandalkan api v2 sumber data lama.

Solusinya adalah melepas toples custom kemudian percikan api mulai bekerja dengan baik.

0
Scott Hsieh 2020-07-30 17:00.

saat ini, saya sudah mendapat jalan keluar untuk memanipulasi data melalui API fungsi Python untuk Spark.

solusi

1

# clone a specific branch 
git clone -b branch-3.0 --single-branch https://github.com/apache/spark.git
## could try the follwoing command
## git clone --branch v3.0.0 https://github.com/apache/spark.git

# build a Spark distribution
cd spark
./dev/make-distribution.sh --name spark3.0.1 --pip --r --tgz -e -PR -Phive -Phive-thriftserver -Pmesos -Pyarn -Dhadoop.version=3.0.0 -DskipTests -Pkubernetes
## after changing the value of SPARK_HOME in `.bashrc_profile`
source ~/.bashrc_profile

# downlaod needed additional jars into the directory
cd ${SPARK_HOME}/assembly/target/scala-2.12/jars curl -O https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.0.0/hadoop-aws-3.0.0.jar curl -O https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.828/aws-java-sdk-bundle-1.11.828.jar cd ${SPARK_HOME}

# add related configuraionts for Spark
cp ${SPARK_HOME}/conf/spark-defaults.conf.template ${SPARK_HOME}/conf/spark-defaults.conf
## add required or desired parameters into the `spark-defaults.conf`
## as of me, I edited the configuraion file by `vi`

# launch an interactive shell
pyspark
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 3.0.1-SNAPSHOT
      /_/

Using Python version 3.8.5 (default, Jul 24 2020 05:43:01)
SparkSession available as 'spark'.
## after launching, I can read parquet and csv files without the exception

2
setelah mengatur semua hal yang disebutkan di atas, tambahkan ${SPARK_HOME}/pythonke variabel lingkungan PYTHONPATH, lalu ingat untuk sumber file terkait (saya menambahkannya ke .bashrc_profile).

from pyspark import SparkConf
from pyspark.sql import SparkSession
sc = SparkConf()
threads_max = 512
connection_max = 600
sc.set("spark.driver.memory", "10g")
sc.set('spark.hadoop.fs.s3a.threads.max', threads_max)
sc.set('spark.hadoop.fs.s3a.connection.maximum', connection_max)
sc.set('spark.hadoop.fs.s3a.aws.credentials.provider',
           'com.amazonaws.auth.EnvironmentVariableCredentialsProvider')
sc.set('spark.driver.maxResultSize', 0)
spark = SparkSession.builder.appName("cest-la-vie")\
    .master("local[*]").config(conf=sc).getOrCreate()
## after launching, I can read parquet and csv files without the exception

catatan

Saya juga mencoba membuat pip PySpark dapat diinstal dari bangunan sumber, tetapi saya terjebak pada ukuran file pengunggahan ke testpypi. Ini mencoba adalah bahwa saya ingin paket pyspark ada di bawah direktori paket situs. Berikut ini adalah langkah-langkah saya mencoba:

cd ${SPARK_HOME}/python
# Step 1
python3.8 -m pip install --user --upgrade setuptools wheel
# Step 2
python3.8 setup.py sdist bdist_wheel ## /opt/spark/python
# Step 3
python3.8 -m pip install --user --upgrade twine
# Step 4
python3.8 -m twine upload --repository testpypi dist/*
## have registered an account for testpypi and got a token
Uploading pyspark-3.0.1.dev0-py2.py3-none-any.whl

## stuck here
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████| 345M/345M [00:49<00:00, 7.33MB/s]
Received "503: first byte timeout" Package upload appears to have failed.  Retry 1 of 5

MORE COOL STUFF

Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'

Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'

Jana Duggar terbuka tentang pencarian cintanya. Inilah semua yang dia katakan tentang topik dan jendela lima tahun untuk menikah.

Sam Heughan Tahu Persis Apa yang Akan Dia Ambil Dari Set 'Outlander' - 'Saya Merasa Seperti Saya Jamie Ketika Saya Memakainya'

Sam Heughan Tahu Persis Apa yang Akan Dia Ambil Dari Set 'Outlander' - 'Saya Merasa Seperti Saya Jamie Ketika Saya Memakainya'

Bintang 'Outlander' Sam Heughan baru-baru ini mengungkapkan apa yang akan dia ambil dari lokasi syuting untuk mengingat Jamie Fraser, peran yang membuatnya menjadi bintang.

Lagu The Early Beatles yang Menjadi Salah Satu 'Penampilan Paling Menyenangkan' Band, Menurut Fab Four Insider

Lagu The Early Beatles yang Menjadi Salah Satu 'Penampilan Paling Menyenangkan' Band, Menurut Fab Four Insider

'She Loves You' ditulis dalam satu jam, direkam dalam sehari, dan merupakan lagu The Beatles dengan salah satu penampilan terbaik dalam karir mereka.

Dolly Parton Membantu Neneknya yang 'Cacat' Ketika Tidak Ada Cucu Lain yang Mau—Dia Juga Mengerjainya

Dolly Parton Membantu Neneknya yang 'Cacat' Ketika Tidak Ada Cucu Lain yang Mau—Dia Juga Mengerjainya

Dolly Parton dan Nenek Bessie memiliki hubungan khusus. Nenek Parton sakit parah, tapi itu tidak menghentikan Dolly untuk mengerjainya.

Pemikiran Objektif vs. Pemikiran Subjektif dan Aplikasinya

Pemikiran Objektif vs. Pemikiran Subjektif dan Aplikasinya

Untuk memahami perbedaan antara pemikiran objektif dan subjektif, penting untuk memahami apa yang membuat masing-masing jenis penalaran menjadi unik. Informasi subjektif didasarkan pada pendapat atau perasaan pribadi mengenai pokok bahasan tertentu. Sebaliknya, informasi objektif bersifat faktual, berbasis data, dan tidak bias.

Apa itu Kelembapan dan Bagaimana Kelembapan Mempengaruhi Suhu?

Apa itu Kelembapan dan Bagaimana Kelembapan Mempengaruhi Suhu?

Saat membahas cuaca, kelembapan adalah topik pembicaraan dan kekhawatiran yang terus-menerus, terutama selama bulan-bulan musim panas yang lembap. Ketika orang berkata, "Setidaknya cuacanya kering," itu hanyalah cara lain untuk mengatakan, "Wah! Setidaknya cuacanya tidak lembap!"

Bisakah Kita Menyelamatkan Badak Sumatera dari Kepunahan?

Bisakah Kita Menyelamatkan Badak Sumatera dari Kepunahan?

Badak Sumatera merupakan spesies badak tertua yang hidup saat ini, namun terdapat kemungkinan 90% populasi yang tersisa akan punah dalam 60 tahun ke depan.

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Rekap The Bear: Apakah Marcus pria yang paling baik hati, paling lembut, dan paling tulus di Chicago?

Rekap The Bear: Apakah Marcus pria yang paling baik hati, paling lembut, dan paling tulus di Chicago?

“Children” merilis cameo dengan nama besar dan beberapa berita buruk

Dengan Harga $9.800, Maukah Anda 'Mengemasnya' di Toyota RAV4 2008 Tujuh Tempat Duduk Ini?

Dengan Harga $9.800, Maukah Anda 'Mengemasnya' di Toyota RAV4 2008 Tujuh Tempat Duduk Ini?

RAV4 ini diklaim dalam kondisi sangat baik dan siap digunakan untuk permainan kursi musik.

Van Pengiriman Amazon Menyala dalam Ledakan Berapi-api Selama Musim Panas di Houston

Van Pengiriman Amazon Menyala dalam Ledakan Berapi-api Selama Musim Panas di Houston

Rekaman drone memperlihatkan petugas pemadam kebakaran yang tampak kesulitan memadamkan api.

Pertunjukan Black Panther Marvel Akan Menjadi Pertunjukan Animasi Paling Penting

Pertunjukan Black Panther Marvel Akan Menjadi Pertunjukan Animasi Paling Penting

Eyes of Wakanda terhubung langsung dengan MCU, ditambah pembaruan tentang X-Men '97, What If..., Daredevil, dan banyak lagi.

Pemeran Laguna Beach: Di Mana Mereka Sekarang?

Pemeran Laguna Beach: Di Mana Mereka Sekarang?

'Laguna Beach' mengikuti kehidupan siswa sekolah menengah Lauren Conrad, Kristin Cavallari, Stephen Colletti, dan banyak lagi pada pertengahan tahun 2000-an. Berikut ini adalah tempat tinggal para pemeran serial realitas MTV tersebut sekarang.

Riwayat Kencan Ava Gardner: Melihat Kembali Pernikahan dan Kisah Asmara Sang Ikon Hollywood

Riwayat Kencan Ava Gardner: Melihat Kembali Pernikahan dan Kisah Asmara Sang Ikon Hollywood

Ava Gardner pernah menikah dengan Mickey Rooney dan Frank Sintra, dan ia pernah berpacaran dengan beberapa bintang Hollywood lainnya. Berikut ini kilas balik riwayat berpacaran Ava Gardner.

Siapakah Istri John Cleese? Semua Tentang Jennifer Wade

Siapakah Istri John Cleese? Semua Tentang Jennifer Wade

John Cleese menikahi istrinya, Jennifer Wade, pada tahun 2012. Berikut semua yang perlu Anda ketahui tentang istri John Cleese, Jennifer Wade.

Siapakah Istri Dog Sang Pemburu Bayaran? Semua Tentang Francie Frane

Siapakah Istri Dog Sang Pemburu Bayaran? Semua Tentang Francie Frane

Berikut semua yang perlu Anda ketahui tentang Francie Frane, mantan peternak yang menikah dengan Dog the Bounty Hunter.

kata ganti itu sangat menakutkan

Itu mengejutkan saya Tiba-tiba seperti yang sering terjadi Ini di tengah jalan lagi <Tidak, bukan yang di pasifik Anda merah marun, yang di karnaval> Setiap berita utama keras…..

3 Cara Terbukti untuk Meningkatkan Keterampilan Menulis Anda

Manfaat menulis, dan strategi untuk membantu Anda melakukannya

3 Cara Terbukti untuk Meningkatkan Keterampilan Menulis Anda

Di tahun 2022, dengan dirilisnya GPT-3, kemampuan menulis sepertinya menjadi kurang penting. Dengan AI, orang dengan tulisan yang buruk juga dapat menghasilkan staf yang berkualitas.

Erosi Lambat: Mengungkap Cara Orang Menghilang dalam Kariernya

Erosi Lambat: Mengungkap Cara Orang Menghilang dalam Kariernya

Di dunia yang serba cepat dan kompetitif saat ini, karier seseorang memainkan peran penting dalam pertumbuhan pribadi, stabilitas keuangan, dan kepuasan hidup secara keseluruhan. Namun, banyak orang menemukan diri mereka terjebak dalam siklus stagnasi dan ketidakpuasan tanpa henti, secara bertahap menyia-nyiakan kehidupan profesional mereka.

Apa yang membuat podcast berpengaruh?

Apa yang membuat podcast berpengaruh?

Minggu lalu saya melihat siaran pers, dikirim melalui PressGazette (situs web berita media Inggris). Artikel tersebut mengumumkan bahwa Acast, perusahaan hosting dan periklanan podcast Scandi, akan memimpin konsorsium penerbit "mungkin yang paling berpengaruh" dalam podcasting.

Language