以下是Spark&的版本。我在我的系统中安装了Hive
Spark :spark-1.4.0-bin-hadoop2.6
Hive :apache-hive-1.0.0-bin
我已将Hive安装配置为使用 MySQL 作为Metastore。目标是访问 MySQL Metastore&在spark-shell
内执行HiveQL查询(使用HiveContext
)
到目前为止,我能够通过访问Derby Metastore来执行HiveQL查询(如所述here,相信 Spark-1.4 与 Hive 0.13.1捆绑在一起反过来使用内部Derby数据库作为Metastore)
然后我尝试通过设置spark-shell
下面给出的属性(如建议的here),将$SPARK_HOME/conf/spark-defaults.conf
指向我的外部Metastore(本例中为MySQL),
spark.sql.hive.metastore.jars /home/mountain/hv/lib:/home/mountain/hp/lib
我还将$HIVE_HOME/conf/hive-site.xml
复制到$SPARK_HOME/conf
。但是当我启动spark-shell
mountain@mountain:~/del$ spark-shell
Spark context available as sc.
java.lang.ClassNotFoundException: java.lang.NoClassDefFoundError:
org/apache/hadoop/hive/ql/session/SessionState when creating Hive client
using classpath: file:/home/mountain/hv/lib/, file:/home/mountain/hp/lib/
Please make sure that jars for your version of hive and hadoop are
included in the paths passed to spark.sql.hive.metastore.jars.
我错过了(或)没有正确设置属性spark.sql.hive.metastore.jars
的内容吗?
答案 0 :(得分:0)
hive-site.xml的版本损坏将导致此问题...请复制正确的hive-site.xml
答案 1 :(得分:0)
注意:在 Linux Mint 中验证。
如果您在 spark-defaults.conf 中设置属性,则仅当您使用 spark-submit 提交作业时,spark 才会采用这些设置。
文件:spark-defaults.conf
spark.driver.extraJavaOptions -Dlog4j.configuration=file:log4j.properties -Dspark.yarn.app.container.log.dir=app-logs -Dlogfile.name=hello-spark
spark.jars.packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1,org.apache.spark:spark-avro_2.12:3.0.1
在终端运行你的工作,说 wordcount.py
spark-submit /path-to-file/wordcount.py
如果您想从 IDE 以开发模式运行您的作业,那么您应该使用 config() 方法。这里我们将设置Kafka jar包
spark = SparkSession.builder \
.appName('Hello Spark') \
.master('local[3]') \
.config("spark.streaming.stopGracefullyOnShutdown", "true") \
.config("spark.jars.packages", "org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1") \
.getOrCreate()