Я не можу читати файли іскри за допомогою бібліотеки spark-avro.
- Отримала баночку з: http://mvnrepository.com/artifact/com.databricks/spark-avro_2.10/0.1
- Використовується іскрова оболонка
spark-shell --jars avro/spark-avro_2.10-0.1.jar
Виконані команди, наведені в git readme:
import com.databricks.spark.avro._ import org.apache.spark.sql.SQLContext val sqlContext = new SQLContext(sc) val episodes = sqlContext.avroFile("episodes.avro")
Дія sqlContext.avroFile ("episodes.avro") завершується з помилкою:
scala> val episodes = sqlContext.avroFile("episodes.avro") java.lang.IncompatibleClassChangeError: class com.databricks.spark.avro.AvroRelation has interface org.apache.spark.sql.sources.TableScan as super class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
Відповіді:
6 за відповідь № 1Моє ліжко. Програма readme чітко говорить:
Versions
Spark changed how it reads / writes data in 1.4, so please use the correct version of this dedicated for your spark version
1.3 -> 1.0.0
1.4+ -> 1.1.0-SNAPSHOT
Я використовував іскру:1.3.1
і spark-avro: 1.1.0
. Коли я використовував spark-avro: 1.0.0
, це спрацювало.
0 для відповіді № 2
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
.appName(appName).master(master).getOrCreate()
val sqlContext = spark.sqlContext
val episodes = sqlContext.read.format("com.databricks.spark.avro")
.option("header","true")
.option("inferSchema","true")
.load("episodes.avro")
episodes.show(10)