Hive

2018-06-22  本文已影响0人  Y小伙儿

一:Hive 默认存储在hdfs上,分为内部表与外部表

      内部表删除时数据与元数据均删除

     外部表删除时则只删除元数据,外部数据不受影响

二:   Hive支持分区,分区pattition(单分区,双分区)可提高查询效率

三:默认采用文本格式且不压缩,支持gzip,bzlib,snappy等格式

四:导入、出数据

        导入数据

  load data local path ‘TEXT.TXT’ overwrite/into table orc_snappy_pro

        导出数据

  hive–e‘select *from orc_snapp_pro’  >>/mnt/guhaifeng/data.txt;

Hive文件格式包含: §textfile:默认的文本方式   §Sequencefile:二进制格式   §rcfile:面向列的二进制格式 (先水平划分,再垂直划分)  §orc:rcfile的增强版本 

创建外部表:

    create external table orc_snappy_pro

    (log_time string,

    log_type string,

    Country string,

    log_detail string)

    PARTITIONED BY (dt STRING) ‘comment  分区’

    ROW FORMAT DELIMITEDFIELDS TERMINATED BY ‘\001’

    STORED AS orc

    location ‘s3://mx-hadoop/guhaifeng/orc_snappy_pro/’

    tblproperties ("orc.compress"="SNAPPY");

RDD存储Hive两种方式:

一:使用反射来推断包含特定类型对象的RDD的模式

       1.将RDD转化为一个SchemaRDD

   rows = split_filed.map(lambda words:Row(log_time=words[0],log_type=words[1],country=words[2])

   tmp_dataframe = sqlContext.createDataFrame(rows)

2.SchemaRDD注册临时表

   tmp_dataframe.registerTempTable(“tmp_table”)

3. 临时表数据插入到hive表

   results = sqlContext.sql(“insert into orc_snaooy_pro partition=%s) select  t.log_type,t.log_time from tmp_table t" %(log_date))

二:编程方式指定模式

    从原始RDD创建元组或列表的RDD;

    创建StructType在步骤1中创建的RDD中由元组或列表结构匹配的模式。

    通过createDataFrame提供的方法将模式应用于RDD SparkSession

Hive-->DataFrame --> RDD

读取hive数据写入其他表

采用Rcfile存储时需要设置以下模式

上一篇下一篇

猜你喜欢

热点阅读