前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >parquet常用操作

parquet常用操作

作者头像
YG
发布2018-10-22 15:25:30
2.8K0
发布2018-10-22 15:25:30
举报
文章被收录于专栏:YG小书屋YG小书屋

1、创建parquet表

1.1、创建内部表

代码语言:javascript
复制
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;

网上有第二种创建方法:

代码语言:javascript
复制
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、创建外部表

代码语言:javascript
复制
create external table tmp.guo_parquet_test (age string,name string, desc string) 
  STORED AS parquet 
  LOCATION '/tmp/jonyguo/streaming_parquet_test';

1.3、指定压缩算法:

代码语言:javascript
复制
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

举例:

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.10.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、创建parquet表
    • 1.1、创建内部表
      • 1.2、创建外部表
        • 1.3、指定压缩算法:
        • 2、Hadoop Streaming读写parquet文件
          • 2.1 Hadoop Streaming 限制
            • 2.2 Hadoop Streaming 读写parquet
            • 3、其他方式读写parquet
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档