spark问题记录
在本机搭建的hadoop平台,spark sql和hive存在无法互相访问的问题,流程如下:1. spark sql创建表的过程如下:
./bin/spark-shell --master yarn
.......
scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS sparksql (key INT, value STRING)")
2. hive采用通常的sql语句创建表
hive> CREATE TABLE IF NOT EXISTS hivetest (key INT, value STRING)
3. 在hadoop的管理页面或者使用“/usr/local/hadoop-2.5.2/bin/hadoop fs -ls /user/hive/warehouse”,均可以看到两种方法创建的表;
但是在运行hive只能检索到hive使用sql语句创建的表:
hive> show tables;
hivetest
scala程序也只能看到scala程序创建的表:
scala> hql("show tables").collect()
.......
res2: Array = Array()
spark采用的是1.2.0,官方文档说支持hive0.13.1,hive使用的是0.13.1
qlcontext使用hivecontext创建的:
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
解决办法:
找到原因了,hive会在运行的子目录下寻找metastore_db的目录,该目录存储了所有和hive表相关的信息,hive在目录下存储的是哪个metastore_db,hive或者spark看到的就是哪个hive表,也可以通过设置更改。
页:
[1]