Spark 支持哪些版本的 avro 和 parquet 格式?
What versions of avro and parquet formats does Spark support?
Spark 2.0 是否支持 avro 和 parquet 文件?什么版本?
我已经下载 spark-avro_2.10-0.1.jar
并在加载过程中遇到此错误:
Name: java.lang.IncompatibleClassChangeError
Message: org.apache.spark.sql.sources.TableScan
StackTrace: at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:349)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:727)
at java.net.URLClassLoader.access0(URLClassLoader.java:95)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1182)
at java.security.AccessController.doPrivileged(AccessController.java:686)
at java.net.URLClassLoader.findClass(URLClassLoader.java:602)
Does spark 2.0 supports avro and parquet files?
开箱即用的 Spark 2.x 不支持 Avro 格式。您必须使用外部包,例如spark-avro.
Name: java.lang.IncompatibleClassChangeError
Message: org.apache.spark.sql.sources.TableScan
java.lang.IncompatibleClassChangeError
的原因是您使用了为 Scala 2.10 编译的 spark-avro_2.10-0.1.jar
,但 Spark 2.0 使用 Scala 2.11 默认。这不可避免地导致这个 IncompatibleClassChangeError
错误。
您应该使用 --packages
命令行选项加载 spark-avro 包(如 With spark-shell or spark-submit 中 spark-avro 的官方文档所述):
$ bin/spark-shell --packages com.databricks:spark-avro_2.11:3.2.0
using --packages
ensures that this library and its dependencies will be added to the classpath. The --packages
argument can also be used with bin/spark-submit
.
Parquet 格式是加载或保存数据集时的默认格式。
// loading parquet datasets
spark.read.load
// saving in parquet format
mydataset.write.save
您可能需要阅读官方文档中的 Parquet Files 支持:
Spark SQL provides support for both reading and writing Parquet files that automatically preserves the schema of the original data.
使用了 Parquet 1.8.2(正如您在 Spark 中看到的 pom.xml)
您只是使用了错误的依赖项。您应该使用使用 Scala 2.11 编译的 spark-avro
依赖项。你可以找到它here。
至于 parquet,无需添加任何依赖项即可支持它。
Spark 2.0 是否支持 avro 和 parquet 文件?什么版本?
我已经下载 spark-avro_2.10-0.1.jar
并在加载过程中遇到此错误:
Name: java.lang.IncompatibleClassChangeError
Message: org.apache.spark.sql.sources.TableScan
StackTrace: at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:349)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:727)
at java.net.URLClassLoader.access0(URLClassLoader.java:95)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1182)
at java.security.AccessController.doPrivileged(AccessController.java:686)
at java.net.URLClassLoader.findClass(URLClassLoader.java:602)
Does spark 2.0 supports avro and parquet files?
开箱即用的 Spark 2.x 不支持 Avro 格式。您必须使用外部包,例如spark-avro.
Name: java.lang.IncompatibleClassChangeError
Message: org.apache.spark.sql.sources.TableScan
java.lang.IncompatibleClassChangeError
的原因是您使用了为 Scala 2.10 编译的 spark-avro_2.10-0.1.jar
,但 Spark 2.0 使用 Scala 2.11 默认。这不可避免地导致这个 IncompatibleClassChangeError
错误。
您应该使用 --packages
命令行选项加载 spark-avro 包(如 With spark-shell or spark-submit 中 spark-avro 的官方文档所述):
$ bin/spark-shell --packages com.databricks:spark-avro_2.11:3.2.0
using
--packages
ensures that this library and its dependencies will be added to the classpath. The--packages
argument can also be used withbin/spark-submit
.
Parquet 格式是加载或保存数据集时的默认格式。
// loading parquet datasets
spark.read.load
// saving in parquet format
mydataset.write.save
您可能需要阅读官方文档中的 Parquet Files 支持:
Spark SQL provides support for both reading and writing Parquet files that automatically preserves the schema of the original data.
使用了 Parquet 1.8.2(正如您在 Spark 中看到的 pom.xml)
您只是使用了错误的依赖项。您应该使用使用 Scala 2.11 编译的 spark-avro
依赖项。你可以找到它here。
至于 parquet,无需添加任何依赖项即可支持它。