You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "颖 (Jira)" <ji...@apache.org> on 2020/04/28 11:36:00 UTC
[jira] [Created] (FLINK-17438) Flink StreamingFileSink chinese
garbled
颖 created FLINK-17438:
-------------------------
Summary: Flink StreamingFileSink chinese garbled
Key: FLINK-17438
URL: https://issues.apache.org/jira/browse/FLINK-17438
Project: Flink
Issue Type: Bug
Components: Formats (JSON, Avro, Parquet, ORC, SequenceFile)
Affects Versions: 1.10.0
Environment: CDH6.0.1 hadoop3.0.0 Flink 1.10.0
Reporter: 颖
val writer:CompressWriterFactory[String] = new CompressWriterFactory[String](new DefaultExtractor[String]())
.withHadoopCompression(s"SnappyCodec")//${compress}
val fileConfig = OutputFileConfig.builder().withPartPrefix(s"${prefix}").withPartSuffix(s"${suffix}").build()
val bulkFormatBuilder = StreamingFileSink.forBulkFormat(new Path(output), writer)
// 自定义分桶策略
bulkFormatBuilder.withBucketAssigner(new DemoAssigner())
// 自定义输出文件配置
bulkFormatBuilder.withOutputFileConfig(fileConfig)
val sink = bulkFormatBuilder.build()
// val rollingPolicy = DefaultRollingPolicy.builder().withRolloverInterval(TimeUnit.MINUTES.toMillis(5)).withInactivityInterval(TimeUnit.MINUTES.toMillis(3)).withMaxPartSize(1 * 1024 * 1024)
// val bulkFormatBuilder = StreamingFileSink.forRowFormat(new Path(output), new SimpleStringEncoder[String]()).withRollingPolicy(rollingPolicy.build())
// val sink = bulkFormatBuilder.build()
ds.map(_.log).addSink(sink).setParallelism(fileNum).name("snappy sink to hdfs")
In this way, flink API is called and written to HDFS. There are Chinese fields in the log, and the corresponding scrambled code is after hive is resolved,
CREATE EXTERNAL TABLE `demo_app`(
`str` string COMMENT '原始记录json')
COMMENT 'app flink埋点日志'
PARTITIONED BY (
`ymd` string COMMENT '日期分区yyyymmdd')
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://nameservice1/user/xxx/inke_back.db'
kafka source data :
{"name":"inke.dcc.flume.collect","type":"flume","status":"完成","batchDuration":3000,"proccessDelay":0,"shedulerDelay":0,"topic":"newserverlog_opd_operate_log","endpoint":"ali-a-opd-script01.bj","batchId":"xxx","batchTime":1588065997320,"numRecords":-1,"numBytes":-1,"totalRecords":0,"totalBytes":0,"ipAddr":"10.111.27.230"}
hive data :
{"name":"inke.dcc.flume.collect","type":"flume","status":"������","batchDuration":3000,"proccessDelay":0,"shedulerDelay":0,"topic":"newserverlog_opd_operate_log","endpoint":"ali-a-opd-script01.bj","batchId":"xxx","batchTime":1588065997320,"numRecords":-1,"numBytes":-1,"totalRecords":0,"totalBytes":0,"ipAddr":"10.111.27.230"}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)