spark中连接hive
由于spark是大数据的分析计算引擎,hive作为一个数据仓库,spark经常需要和hive结合起来使用,spark sql如果需要连接到一个hive上,需要将hive-site.xml复制到spark的conf目录下(如果使用spark内置的hive元数据仓库,则会在spark的工作目录下创建Hive元数据仓库,metastore_db),且由于Hive的元数据存储在mysql中,所以spark的jars目录下还需要有mysql驱动
由于我下载的版本是没有集成hive的,所以又下载了一个spark源码包进行编译的
1 | 在源码包中进行执行 |
执行完了之后会将jars包打到/源码包/assembly/target/scala-2.12/jars中,我把这里的所有包直接拷贝到spark的jars目录下
之后启动hive的元数据
1 | bin/hive --service metastore |
启动hive的hiveserver2
1 | bin/hiveserver2 |
在spark中就可以访问hive数据了
有三种方式可以获取hive数据
使用spark-shell
在spark-shell中使用spark.sql编写sql语句就可以直接访问hive的表数据了
使用spark-sql
也可以直接使用spark-sql直接在其中编写执行sql语句
1 | bin/spark-sql |
使用spark-beeline
在hive中开启了hiveserver2,可以直接使用协议进行连接hive,而spark的spark thrift server协议与hiveserver2是一致的,spark thrift server的目的只是取代hiveserver2
启动spark thrift server
1 | sbin/start-thriftserver.sh |
使用beeline进行连接
1 | bin/beeline -u jdbc:hive2://localhost:10000 -n zhanghe |
在连接的时候如果遇到用户权限问题而连接不上的话,可以修改hadoop中的core-site.xml
1 | <!--zhanghe是我的用户名,这里要配置成与你所使用的一致 |
代码访问
1 |
|