parquet常用操作

1、创建parquet表

1.1、创建内部表

CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>) 
PARTITIONED BY (part string)
STORED AS PARQUET;

网上有第二种创建方法:

CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>) 
PARTITIONED BY (part string)
ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe'
 STORED AS
 INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'
 OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat';

第一种是hive0.13之后的版本,第二种时0.13之前的版本。目前大都是使用第一种创建方法。https://cwiki.apache.org/confluence/display/Hive/Parquet

1.2、创建外部表

create external table tmp.guo_parquet_test (age string,name string, desc string) 
  STORED AS parquet 
  LOCATION '/tmp/jonyguo/streaming_parquet_test';

1.3、指定压缩算法:

CREATE TABLE parquet_test (
 id int,
 str string,
 mp MAP<STRING,STRING>,
 lst ARRAY<STRING>,
 strct STRUCT<A:STRING,B:STRING>) 
PARTITIONED BY (part string)
STORED AS PARQUET
TBLPROPERTIES('parquet.compression'='SNAPPY');

注意: 1)有SNAPPY和GZIP两种压缩算法,GZIP不管时从空间大小还是查询性能都比较优秀。 2)指定orc压缩格式是:TBLPROPERTIES('orc.compress'='ZLIB');parquet是TBLPROPERTIES('parquet.compression'='SNAPPY');

2、Hadoop Streaming读写parquet文件

2.1 Hadoop Streaming 限制

Hadoop Streaming限制: 1)Hadoop Streaming读写的数据格式都是Text文件格式。针对于parquet文件格式,无法直接读取,需要经过转换器转换。 2)Hadoop Streaming读写的api全是旧API,即mapred包。无法处理新API,mapreduce包。

MR新旧API读写parquet的例子可在 https://blog.csdn.net/woloqun/article/details/76068147 中找到。

2.2 Hadoop Streaming 读写parquet

可通过网友写的一个库直接用Hadoop Streaming读写parquet https://github.com/whale2/iow-hadoop-streaming

举例:

hadoop jar /usr/local/hadoop-2.7.0/share/hadoop/tools/lib/hadoop-streaming-2.7.0.jar 
-libjars parquet_test.jar,hadoop2-iow-lib.jar,/usr/local/spark-2.1.0-bin-hadoop2.7/jars/parquet-column-1.8.1.jar,/usr/local/spark-2.1.0-bin-hadoop2.7/jars/parquet-common-1.8.1.jar,/usr/local/spark-2.1.0-bin-hadoop2.7/jars/parquet-encoding-1.8.1.jar,/usr/local/spark-2.1.0-bin-hadoop2.7/jars/parquet-hadoop-1.8.1.jar,/usr/local/spark-2.1.0-bin-hadoop2.7/jars/parquet-format-2.3.0-incubating.jar
-D mapred.job.name="test_streaming" 
-D iow.streaming.output.schema="message example {required binary age;required binary name;required binary desc;}"  
-D mapreduce.output.fileoutputformat.compress=true 
-D parquet.compression=gzip 
-D parquet.read.support.class=net.iponweb.hadoop.streaming.parquet.GroupReadSupport 
-D parquet.write.support.class=net.iponweb.hadoop.streaming.parquet.GroupWriteSupport 
-inputformat net.iponweb.hadoop.streaming.parquet.ParquetAsTextInputFormat 
-outputformat net.iponweb.hadoop.streaming.parquet.ParquetAsTextOutputFormat 
-input "/tmp/jonyguo/parquet_test"  
-output "/tmp/jonyguo/streaming_parquet_test"  
-mapper /bin/cat 
-reducer /bin/cat

注意事项:

  1. 如果输出结果为parquet类型,必须配置schema信息(iow.streaming.output.schema)。 2)读或者写parquet时必须配置support.class。

3、其他方式读写parquet

通过spark,mapreduce读写parquet的方式可参考文章:https://blog.csdn.net/woloqun/article/details/76068147

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Netkiller

Apache Hive 快速入门

本文节选自《Netkiller Database 手札》 CentOS 7.3 + Server JRE 1.8 + Hadoop-2.8.0 + Hive-...

3297
来自专栏mantou大数据

【大数据安全】CDH集群禁用Kerberos

在调试Kerberos的时候可能会有需要禁用的场景。以下是各组件禁用Kerberos的相关配置。

3813
来自专栏积累沉淀

25分钟掌握Hive基本操作

15分钟掌握Hive基本操作 (1)、从本地文件系统中导入数据到Hive表; (2)、从HDFS上导入数据到Hive表; (3)、从别的表中查询出相应的数据并导...

1867
来自专栏Hadoop实操

如何在CDH6.0中启用Kerberos

在前面的文章中,Fayson介绍了《如何在Redhat7.4安装CDH6.0》,这里我们基于这个环境开始安装Kerberos。关于CDH启用Kerberos的文...

1.2K4
来自专栏Hadoop实操

如何在Kudu1.5中使用Sentry授权

Fayson在之前的文章详细介绍了CDH5.13的新功能,参考《CDH5.13和CM5.13的新功能》。CDH5.13中默认打包了Kudu,我们在安装Kudu的...

5397
来自专栏互联网杂技

SpringBoot ( 七 ) :springboot + mybatis 多数据源最简解决方案

说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务。我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决...

1933
来自专栏Hadoop实操

如何使用Sentry通过视图实现Impala的行级授权

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

5619
来自专栏恰童鞋骚年

Hadoop学习笔记—17.Hive框架学习

  Hive 是建立在 Hadoop 基础上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在...

902
来自专栏LhWorld哥陪你聊算法

Hive篇---Hive与Hbase整合

Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要。

1.2K3
来自专栏喵了个咪的博客空间

[喵咪大数据]Hive2搭建和基本操作

[喵咪大数据]Hive2搭建 ? 说到Hadoop生态有一个不得不提的组件那就是<Hive>,Hive是基于Hadoop结构化存储引擎,能够存储海量的数据,Hi...

40610

扫码关注云+社区

领取腾讯云代金券