"我使用flink 1.6,我知道我可以使用自定义接收器和hive jdbc来编写hive,或者使用JDBCAppendTableSink,但它仍然使用jdbc。问题是hive jdbc不支持batchExecute方法。我认为它会很慢。
然后我寻求另一种方式,我用writeAsText方法将数据集写入hdfs,然后从hdfs创建hive表。但是仍然存在一个问题:如何附加增量数据。 WriteMode的api是:
Enum FileSystem.WriteMode
枚举常量和描述
NO_OVERWRITE
仅当该路径上不存在任何文件时才创建目标文件。
OVERWRITE
无论任何现有文件或目录如何,都会创建新的目标文件。
例如,第一批,我将9月的数据写入配置单元,然后我获取10月的数据,我想追加它。
但是如果我对同一个hdfs文件使用OVERWRITE,9月的数据将不再存在,如果我使用NO_OVERWRITE,我必须将它写入新的hdfs文件,然后是新的hive表,我们需要它们在同一个hive表中。我不知道如何将2个hdfs文件合并到一个配置单元表中。
那么如何使用flink将增量数据写入hive?"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
"我想默认模式是将(text,avro,parquett)-files写入HDFS并在该目录上定义外部hive表。在那里,如果您有一个文件或多个文件并不重要。但是您很可能必须定期修复此表(msck修复表。;)。这将更新元数据,新文件将可用。
对于更大量的数据,我建议对表进行分区并根据需要添加分区(这篇博文可能会给你一个提示:https://resources.zaloni.com/blog/partitioning-in-hive)"