Spark SQL访问Hive表数据

前提:Hive的元数据保存在MySQL中
Hive配置文件hive-site.xml内容如下:






    javax.jdo.option.ConnectionURL
    jdbc:mysql://hadoop000:3306/hadoop_hive?createDatabaseIfNotExist=true



    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver



    javax.jdo.option.ConnectionUserName
    root



    javax.jdo.option.ConnectionPassword
    root


    hive.mapred.supports.subdirectories
    true


    mapreduce.input.fileinputformat.input.dir.recursive
    true


    hive.metastore.uris
    thrift://hadoop000:9083



具体步骤:
(1)将hive-site.xml文件拷贝到${SPARK_HOME}/conf目录下
(2)后台启动metastore服务进程:

nohup ${HIVE_HOME}/bin/hive --service metastore >metastore.log 2>&1 &

(3)启动Spark SQL:

${SPARK_HOME}/bin/spark-sql

注意:如果在Windows上使用IDEA,通过Spark程序远程访问服务器上的Hive表,需要在hive-site.xml中添加以下内容指定数据存储位置在HDFS上,而不是本地,否则会在当前项目下创建spark-warehouse目录,读取的是本地Spark内嵌的Hive中 的数据。然后把hive-site.xml拷贝到当前项目的resources目录下(core-site.xml、hdfs-site.xml实测不需要拷贝也能正常运行),另外需要在SparkConf对象上调用enableHiveSupport()方法,它的作用是让Spark程序读取类路径下的hive-site.xml配置文件


    hive.metastore.warehouse.dir
    /user/hive/warehouse

你可能感兴趣的:(Spark,Spark,SQL)