zoukankan      html  css  js  c++  java
  • Spark On Hive 配置

     配置

    1、将Hive-site.xml复制到Spark/conf目录下

    如果hive-site中配置了查询引擎,需要将其注掉

     <!-- <property>
        <name>hive.execution.engine</name>
        <value>tez</value>
    </property>
    -->

    2、将把 Mysql 的驱动  mysql-connector-java-5.1.27-bin.jar copy 到 Spark/jars/目录下

    3、保险起见,可将core-site.xml和hdfs-site.xml 拷贝到Spark/conf/目录下

    4、如果hive中表是采用Lzo或snappy等压缩格式,需要配置spark-defaults.conf,详情参考https://www.cnblogs.com/yangxusun9/p/12827957.html#fneQWfJQ,或者直接将lzo包拷贝到jars目录下

    花式连接

    利用spark-sql 来代替 hive

    最普遍的应用就是在脚本中, 用 ''spark-sql --master yarn '' 来代替   " hive",来提高运行速度

    开启thriftserver服务,利用beeline连接

    开启thriftserver服务

    sbin/start-thriftserver.sh 
    --master yarn 
    --hiveconf hive.server2.thrift.bind.host=hadoop102   ##默认
    -–hiveconf hive.server2.thrift.port=10000     ##默认

    使用beeline

    bin/beeline
    
    # 然后输入
    !connect jdbc:hive2://hadoop102:10000
    # 然后按照提示输入用户名和密码

    利用第三方工具(如IDEA)连接

    添加依赖

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>

    配置文件

    保险起见,把core-site.xml,hdfs-site.xml,hive-site.xml都拷贝到Rsource目录下

     代码

    注意,此时又可能会报权限不足的错   org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied:

    需要在代码首行添加用户名

    object JDBCDemo {
        def main(args: Array[String]): Unit = {
            System.setProperty("HADOOP_USER_NAME", "guigu")//!!!解决权限报错
            val conf = new SparkConf().setAppName("JDBCDemo$").setMaster("local[*]")
            val spark = SparkSession.builder().config(conf)
                
                .enableHiveSupport()//!!!!默认不支持外部hive,这里需调用方法支持外部hive
                .getOrCreate()
            import spark.implicits._
            spark.sql("use gmall")
            spark.sql("show tables").show()
    
        }
    
    }

     对hive中的表进行读写操作

    读按照上面代码就可以进行正常操作,但是写的时候需要注意,创建数据库时数据库位置需要提前声明,不然就是在本地创建,创建表则不用声明

    如果之前导入了core-site,需要将其中的lzo配置注掉,并且在指定文件位置时会默认集群位置,如果要用本地,就用 file://

    object ConnectDemo {
        def main(args: Array[String]): Unit = {
            System.setProperty("HADOOP_USER_NAME", "guigu")
            val conf = new SparkConf().setAppName("ConnectDemo$").setMaster("local[*]")
            val spark = SparkSession
                .builder().config(conf)
                .enableHiveSupport()
                //需指明数据库地址,不然就是在本地创建
                .config("spark.sql.warehouse.dir", "hdfs://hadoop102:9000/user/hive/warehouse")
                .getOrCreate()
            import spark.implicits._
            spark.sql("use spark1")
            //        val df = spark.read.json("User")   //第一列为 name:string 第二列为salary:long
            //        spark.sql("drop table user")
            //        df.printSchema()
            //            df.write.mode(SaveMode.Append).saveAsTable("user")
    
            //saveAsTable写入,要求字段名字和数据类型与原表保持一致,字段顺序可随意
            //        val df1 = List((1000l, "ace"), (1011l, "jaek")).toDF("salary", "name") //这里数据类型必须跟原表保持一致
            //        df1.write.mode(SaveMode.Append).saveAsTable("user")
    
            //insertInto
            //要求字段数据类型和顺序必须保持一致,名字可随意,否则
            //          +------+------+
            //          |  name|salary|
            //          +------+------+
            //          |  Andy|  4500|
            //            |Justin|  3500|
            //            | Berta|  4000|
            //            |  jaek|  1011|
            //            |   ace|  1000|
            //            |  1000|  null|
            //            |  1011|  null|
            //            +------+------+
    //        val df1 = List((1000l, "ace"), (1011l, "jaek")).toDF("s", "n")
    //        df1.write.insertInto("user")
    
    //        使用 hive的insert 语句
            spark.sql("insert into table user values ('andy',5000)")
            spark.sql("select * from user").show()
        }
    
    }

     

     

  • 相关阅读:
    Springboot2.0之HikariCP 连接池
    Spring Kafka中关于Kafka的配置参数
    Spring @Async异步线程池 导致OOM报错的原因
    JDK 8 函数式编程入门
    Spring自定义argumentResolver参数解析器
    Kafka消费异常处理
    Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
    Mysql索引研究总结
    windows安装zookeeper
    JVM中的堆和栈
  • 原文地址:https://www.cnblogs.com/yangxusun9/p/12890770.html
Copyright © 2011-2022 走看看