java写parquet

hive表结构
CREATE EXTERNAL TABLE parquet(                                    
    id int,                                                         
    test_int32 int,
    test_int64 bigint,
    test_boolean boolean,
    test_string string,
    test_float float,
    test_double double,
    test_binary binary
)                                                      
stored as parquet
location '/user/hackcoder/hive_db/db_hackcoder.db/parquet';
写parquet文件
public void parquetWrite() throws IOException {
		int blockSize =134217728;
		int pageSize = 1048576;
		int dictionaryPageSize = 1048576;
		boolean enableDictionary = true;
		boolean validating = false;

		String outPath = "/user/hackcoder/hive_db/db_hackcoder.db/parquet/1.parquet";
		MessageType schema = MessageTypeParser.parseMessageType("message parquet {\n" +
				"    required int32 id;\n" +
				"    required int32 test_int32;\n" +
				"    required int64 test_int64;\n" +
				"    required boolean test_boolean;\n" +
				"    required binary test_string (UTF8);\n" +
				"    required float test_float;\n" +
				"    required double test_double;\n" +
				"    required binary test_binary;\n" +
				"}");
		GroupFactory factory = new SimpleGroupFactory(schema);
		GroupWriteSupport writeSupport = new GroupWriteSupport();
		writeSupport.setSchema(schema, conf);

		ParquetWriter<Group> writer = new ParquetWriter(
				new Path(outPath),
				writeSupport,
				CompressionCodecName.UNCOMPRESSED,
				blockSize, pageSize, dictionaryPageSize,
				enableDictionary,
				validating,
				ParquetProperties.WriterVersion.PARQUET_2_0,
				conf);
		Group group = factory.newGroup()
				.append("id", 1)
				.append("test_int32", 2)
				.append("test_int64", 3L)
				.append("test_boolean", true)
				.append("test_string", "zl")
				.append("test_float", 1.1F)
				.append("test_double", 2.2D)
				.append("test_binary", Binary.fromString("中国"))
				;
		writer.write(group);
		writer.close();
	}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值