我想使用 Spark 2.4.5(当前稳定的 Spark 版本)和 Hadoop 2.10(2.x 系列中当前稳定的 Hadoop 版本)。此外,我需要访问 HDFS、Hive、S3 和 Kafka。
http://spark.apache.org http://spark.apache.org提供预构建的 Spark 2.4.5,并与 Hadoop 2.6 或 Hadoop 2.7 捆绑在一起。
另一种选择是使用 Spark使用用户提供的 Hadoop,所以我尝试了那个。
作为使用的结果使用用户提供的 Hadoop,Spark也不包含Hive库。
将会出现错误,如下所示:如何创建具有 Hive 支持的 SparkSession(失败并显示“未找到 Hive 类”)? https://stackoverflow.com/q/39444493/2390083
当我添加火花蜂巢依赖于火花壳 (火花提交也受到影响)通过使用
spark.jars.packages=org.apache.spark:spark-hive_2.11:2.4.5
in 火花默认值.conf,我收到此错误:
20/02/26 11:20:45 ERROR spark.SparkContext:
Failed to add file:/root/.ivy2/jars/org.apache.avro_avro-mapred-1.8.2.jar to Spark environment
java.io.FileNotFoundException: Jar /root/.ivy2/jars/org.apache.avro_avro-mapred-1.8.2.jar not found
at org.apache.spark.SparkContext.addJarFile$1(SparkContext.scala:1838)
at org.apache.spark.SparkContext.addJar(SparkContext.scala:1868)
at org.apache.spark.SparkContext.$anonfun$new$11(SparkContext.scala:458)
at org.apache.spark.SparkContext.$anonfun$new$11$adapted(SparkContext.scala:458)
at scala.collection.immutable.List.foreach(List.scala:392)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:458)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2520)
at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$5(SparkSession.scala:935)
at scala.Option.getOrElse(Option.scala:189)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:926)
at org.apache.spark.repl.Main$.createSparkSession(Main.scala:106)
because 火花壳无法将分类器与捆绑依赖项一起处理,请参阅https://github.com/apache/spark/pull/21339 https://github.com/apache/spark/pull/21339 and https://github.com/apache/spark/pull/17416 https://github.com/apache/spark/pull/17416
分类器问题的解决方法如下所示:
$ cp .../.ivy2/jars/org.apache.avro_avro-mapred-1.8.2-hadoop2.jar .../.ivy2/jars/org.apache.avro_avro-mapred-1.8.2.jar
但 DevOps 不会接受这一点。
完整的依赖项列表如下所示(我添加了换行符以提高可读性)
root@a5a04d888f85:/opt/spark-2.4.5/conf# cat spark-defaults.conf
spark.jars.packages=com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.10,
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.10,
org.apache.spark:spark-hive_2.11:2.4.5,
org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.5,
org.apache.hadoop:hadoop-aws:2.10.0,
io.delta:delta-core_2.11:0.5.0,
org.postgresql:postgresql:42.2.5,
mysql:mysql-connector-java:8.0.18,
com.datastax.spark:spark-cassandra-connector_2.11:2.4.3,
io.prestosql:presto-jdbc:307
(一切正常 - 除了 Hive)
- Spark 2.4.5 和 Hadoop 2.10 的组合是否在任何地方使用?如何?
- 如何结合Spark 2.4.5 与用户提供的 HadoopHadoop 2.9 或 2.10 ?
- 是否有必要构建 Spark 来解决 Hive 依赖问题?