我有几台自定义格式的TB日志数据机器,可以用c ++库读取。我想将所有数据上传到hadoop集群(HDFS),同时将其转换为镶木地板文件
这是一个正在进行的过程(意味着每天我将获得更多数据),而不是一次性的努力
表现明智(做得有效)的最佳选择是什么?
镶木地板C ++库和Java一样好吗? (更新,错误等)
解决方案应该每天处理数十TB甚至更多。
日志数据到达时应立即在HDFS集群上可用。
答案 0 :(得分:1)
性能方面,您最好的方法是批量收集数据,然后每批写出一个新的Parquet文件。如果您的数据是以单行接收的,并且您希望将它们立即保存在HDFS上,那么您也可以将它们写出为基于行的格式(支持单行附加),例如: AVRO并定期运行一个将它们压缩成单个Parquet文件的工作。
图书馆式,实际上,现在,实际上,现在还有一个实用的开发项目,即镶木地板(Java库)。这主要是因为活动的镶木地板开发(重新)开始于大约1。5年前(冬季/ 2016年春季)。因此,当Java库非常成熟时,C ++库的更新将很快发生,因为它具有庞大的用户群,因为相当多年。有一些功能,如谓词下推,还没有在parquet-cpp中实现,但这些都在读取路径上,因此对于写入而言,它们并不重要。
我们现在处于使用parquet-cpp时,它已经在不同的生产环境中运行非常稳定,因此最终,您选择使用C ++或Java库应该主要取决于我们的系统环境。如果您的所有代码当前都在JVM中运行,那么请使用parquet-mr,否则,如果您是C ++ / Python / Ruby用户,请使用parquet-cpp。
免责声明:我是镶木地板开发商之一。