動機
Spark2.1 + Zeppelinで解析基盤を構築してます。UnionByNameとかが使えないので、Spark3.0にアップデートすることにしました。環境
Apache Hadoop 2.7.3 Apache Spark 2.1 Docker mySQL 5.7.3 (metastore)課題
ダウンロードして docker start mysqld ${HADOOP_HOME}/sbin/start-dfs.sh ${SPARK_HOME}/sbin/start-all.sh したら、 spark hive Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "BONECP" plugin to create a ConnectionPool gave an error : The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH解決
色々調べてとりあえずhive.jarのバージョンがあっていない様子。 https://support.datafabric.hpe.com/s/article/Spark-Hive-Integration-failure?language=jahive-site.xmlに
<name>hive.metastore.schema.verification</name>
<value>false</value>
を記載して対処し、とりあえず無事動きました。
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://XXXX/metastore_db?createDatabaseIfNotExist=true</value>
<description>metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>MySQL JDBC driver class</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>XXXX</value>
<description>user name for connecting to mysql server </description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>XXXX</value>
<description>password for connecting to mysql server </description>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://XXXX</value>
<description>location of default database for the warehouse</description>
</property>
</configuration>