Spark SQL不允许我创建表,抱怨默认的metastore目录



安装Spark 1.5 Spark -1.5.0-bin-hadoop2.6运行$ ./bin/spark-shell试过了,按照文档创建一个表,得到如下:

> SQL context available as sqlContext.
> 
> scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS src (key INT, value
> STRING)"); 15/09/22 22:18:13 ERROR DDLTask:
> org.apache.hadoop.hive.ql.metadata.HiveException:
> MetaException(message:file:/user/hive/warehouse/src is not a directory
> or unable to create one)  at
> org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:720)

尝试传递hive参数,但不工作:

> $  ./bin/spark-shell --conf hive.metastore.warehouse.dir=./ Warning:
> Ignoring non-spark config property: hive.metastore.warehouse.dir=./

最后尝试了CLI本身,但得到相同的问题。我在哪里改变hive仓库参数的位置?我现在没有安装Hadoop,也没有安装hive.

谢谢,马特

hive表的元数据存储在metastore中,hive context增加了在metastore中查找表的支持。

import org.apache.spark.sql.hive.HiveContext
val hiveContext = new HiveContext(sc)
val myDF = sql("select * from mytable")

你将得到dataFrame作为结果

myDF: org.apache.spark.sql.DataFrame = [.....]

spark-shell没有权限写/user/hive/warehouse

    sudo spark-shell再试一次。如果成功,执行第二步。
  1. 修改dir的访问权限,使其与spark-shell命令相同。

实际上你不需要安装Hive(也不需要安装Hadoop,但你需要在你的spark类路径中提供一个Hive -site.xml文件(将hive-site.xml添加到spark conf目录的最简单方法)

这里是一个简单的默认hive-site.xml

<configuration>
<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:derby:;databaseName=/PATH/TO/YOUR/METASTORE/DIR/metastore_db;create=true</value>
   <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
   <name>javax.jdo.option.ConnectionDriverName</name>
   <value>org.apache.derby.jdbc.EmbeddedDriver</value>
   <description>Driver class name for a JDBC metastore</description>
</property>
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>PATH/TO/YOUR/WAREHOSUE/DIR/</value>
    <description>location of default database for the warehouse</description>
</property>
</configuration>

有时,当metastore是本地derby数据库时,它可能有未被删除的锁,如果您遇到metstore锁的问题,您可以删除这些锁(确保只有您首先使用metastore;):

$ rm  /PATH/TO/YOUR/METASTORE/DIR/metastore_db/*.lck

相关内容

  • 没有找到相关文章

最新更新