我想运行一个emr pig作业,目前它在逻辑上分为两个脚本(因此是两个步骤),但是这两个脚本之间的一些数据文件是通用的,我的问题是,pig在运行第二步(第二个脚本)并重用从s3读取的文件时会认识到这一点吗?还是会清除所有内容并从头开始呢?
3zwjbxry1#
如果emr集群正在从s3读取输入数据,那么它根本不会将数据复制到hdfs。amazon emr不将数据复制到本地磁盘;相反,Map器打开到amazons3的多线程http连接,提取数据,并在流中处理它们但是,它不会为多个过程“缓存”这些流:对于迭代数据处理作业,其中数据需要通过多次传递进行多次处理,这不是一个有效的体系结构。这是因为数据是通过网络多次从amazons3中提取的。对于这种情况,最好先用s3distcp将公共数据复制到hdfs。如果您在第一步中生成的一些工件在第二步中有用,那么您可以将它们写入hdfs以供第二步在任何一种情况下使用。参考:aws emr最佳实践指南
9vw9lbht2#
您可以使用s3distcp在emr上下载hdfa中的文件。两个pig脚本都使用hdfs中的文件。这样文件就不会每次都被下载了。
2条答案
按热度按时间3zwjbxry1#
如果emr集群正在从s3读取输入数据,那么它根本不会将数据复制到hdfs。
amazon emr不将数据复制到本地磁盘;相反,Map器打开到amazons3的多线程http连接,提取数据,并在流中处理它们
但是,它不会为多个过程“缓存”这些流:
对于迭代数据处理作业,其中数据需要通过多次传递进行多次处理,这不是一个有效的体系结构。这是因为数据是通过网络多次从amazons3中提取的。
对于这种情况,最好先用s3distcp将公共数据复制到hdfs。如果您在第一步中生成的一些工件在第二步中有用,那么您可以将它们写入hdfs以供第二步在任何一种情况下使用。
参考:aws emr最佳实践指南
9vw9lbht2#
您可以使用s3distcp在emr上下载hdfa中的文件。两个pig脚本都使用hdfs中的文件。这样文件就不会每次都被下载了。