将数据从自定义格式上传到 HDFS 集群
Uploading data to HDFS cluster from custom format
我有几台机器有 TB 的自定义格式的日志数据,可以用 c++ 库读取。我想将所有数据上传到 hadoop 集群 (HDFS),同时将其转换为 parquet 文件。
这是一个持续的过程(意味着我每天都会获得更多数据)而不是一次性的努力。
什么是最好的替代方案来提高性能(高效地执行)?
parquet C++ 库和 Java 库一样好吗? (更新、错误等)
该解决方案应该每天处理数十 TB,将来甚至更多。
日志数据持续到达并且应该立即在 HDFS 集群上可用。
性能方面,最好的方法是分批收集数据,然后每批写出一个新的 Parquet 文件。如果你的数据是单行接收的,并且你想立即将它们保存在 HDFS 上,那么你也可以将它们写成基于行的格式(支持单行追加),例如AVRO 和 运行 定期将它们压缩到单个 Parquet 文件中。
库方面,parquet-cpp 目前比 parquet-mr(Java 库)更积极地开发。这主要是由于活跃的 parquet-cpp 开发(重新)开始于大约 1.5 年前(winter/spring 2016)。因此,目前对 C++ 库的更新会非常快,而 Java 库非常成熟,因为它已经有多年的庞大用户群。有一些功能,如谓词下推,尚未在 parquet-cpp 中实现,但这些都在读取路径上,因此对于写入它们并不重要。
我们现在使用 parquet-cpp,它在不同的生产环境中已经 运行 非常稳定,所以最后,您应该选择使用 C++ 还是 Java 库主要取决于我们的系统环境。如果您的所有代码当前都在 JVM 中 运行ning,那么请使用 parquet-mr,否则,如果您是 C++/Python/Ruby 用户,请使用 parquet-cpp。
免责声明:我是 parquet-cpp 开发人员之一。
我有几台机器有 TB 的自定义格式的日志数据,可以用 c++ 库读取。我想将所有数据上传到 hadoop 集群 (HDFS),同时将其转换为 parquet 文件。
这是一个持续的过程(意味着我每天都会获得更多数据)而不是一次性的努力。
什么是最好的替代方案来提高性能(高效地执行)?
parquet C++ 库和 Java 库一样好吗? (更新、错误等)
该解决方案应该每天处理数十 TB,将来甚至更多。
日志数据持续到达并且应该立即在 HDFS 集群上可用。
性能方面,最好的方法是分批收集数据,然后每批写出一个新的 Parquet 文件。如果你的数据是单行接收的,并且你想立即将它们保存在 HDFS 上,那么你也可以将它们写成基于行的格式(支持单行追加),例如AVRO 和 运行 定期将它们压缩到单个 Parquet 文件中。
库方面,parquet-cpp 目前比 parquet-mr(Java 库)更积极地开发。这主要是由于活跃的 parquet-cpp 开发(重新)开始于大约 1.5 年前(winter/spring 2016)。因此,目前对 C++ 库的更新会非常快,而 Java 库非常成熟,因为它已经有多年的庞大用户群。有一些功能,如谓词下推,尚未在 parquet-cpp 中实现,但这些都在读取路径上,因此对于写入它们并不重要。
我们现在使用 parquet-cpp,它在不同的生产环境中已经 运行 非常稳定,所以最后,您应该选择使用 C++ 还是 Java 库主要取决于我们的系统环境。如果您的所有代码当前都在 JVM 中 运行ning,那么请使用 parquet-mr,否则,如果您是 C++/Python/Ruby 用户,请使用 parquet-cpp。
免责声明:我是 parquet-cpp 开发人员之一。