网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
要说明一点再Flink1.15.3
中是通过AvroParquetWriters
来构造ParquetWriterFactory
,如果是早期版本的Flink可能是要通过ParquetAvroWriters
来进行构造,当然在1.15.3
中也可以通过这个方式进行构造,不过ParquetAvroWriters
已经标注为过时并且建议使用AvroParquetWriters
源码内容如下:
/\*\*
\* Convenience builder to create {@link ParquetWriterFactory} instances for the different Avro
\* types.
\*
\* @deprecated use {@link AvroParquetWriters} instead. // 看这部分是建议使用AvroParquetWriters
\*/
@Deprecated // 这里已经标注了过时
public class ParquetAvroWriters {
/\*\*
\* Creates a ParquetWriterFactory for an Avro specific type. The Parquet writers will use the
\* schema of that specific type to build and write the columnar data.
\*
\* @param type The class of the type to write.
\*/
public static <T extends SpecificRecordBase> ParquetWriterFactory<T> forSpecificRecord(
Class<T> type) {
return AvroParquetWriters.forSpecificRecord(type);
}
- AvroParquetWriters.forReflectRecord(方式三)
这里就先介绍一下AvroParquetWriters.forReflectRecord
的使用方式,我们在使用FileSink
时最好配合Checkpoint
使用,不然文件只会出现inprogress
状态,感兴趣的可以自己实验一下,我在Flink中FileSink的使用演示了加Checkpoint
和不加Checkpoint
的区别感兴趣的可以看一下.
代码模板内容比较简单,直接代码演示:
import com.jin.bean.User;
import com.jin.schema.UserSchemaBean;
import org.apache.flink.connector.file.sink.FileSink;
import org.apache.flink.core.fs.Path;
import org.apache.fl