在我的本地计算机上安装了Spark 1.5 spark-1.5.0-bin-hadoop2.6。 Ran $ ./bin/spark-shell 尝试在the doc之后创建一个表,得到这个:
> 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本身,但遇到了同样的问题。 我在哪里更改配置单元仓库参数位置?我目前没有安装Hadoop,也没有安装。
感谢, 马特
答案 0 :(得分:0)
hive表的元数据在Metastore中进行了分析,hive上下文增加了对在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 = [.....]
答案 1 :(得分:0)
当spark-shell没有写入/ user / hive / warehouse的访问权限时,我遇到了这个问题
答案 2 :(得分:0)
实际上你并不需要安装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 first;)):
$ rm /PATH/TO/YOUR/METASTORE/DIR/metastore_db/*.lck