Apache pig 将输出存储到单个CSV?

Apache pig 将输出存储到单个CSV?,apache-pig,Apache Pig,目前,当我存储到HDFS中时,它会创建许多零件文件 有没有办法存储到单个CSV文件 您可以通过以下几种方式实现: 要设置所有清管器操作的减速机数量,您可以使用default\u parallel属性-但这意味着每个步骤将使用一个减速机,从而降低吞吐量: 设置默认并行1 在调用STORE之前,如果执行的操作之一是(COGROUP、CROSS、DISTINCT、GROUP、JOIN(内部)、JOIN(外部)和ORDER BY),则可以使用PARALLEL 1关键字表示使用单个减速机来完成该命令:

目前,当我存储到HDFS中时,它会创建许多零件文件


有没有办法存储到单个CSV文件

您可以通过以下几种方式实现:

  • 要设置所有清管器操作的减速机数量,您可以使用
    default\u parallel
    属性-但这意味着每个步骤将使用一个减速机,从而降低吞吐量:

    设置默认并行1

  • 在调用STORE之前,如果执行的操作之一是(COGROUP、CROSS、DISTINCT、GROUP、JOIN(内部)、JOIN(外部)和ORDER BY),则可以使用
    PARALLEL 1
    关键字表示使用单个减速机来完成该命令:

    第1组为a组


有关更多信息,请参见。您还可以使用Hadoop的getmerge命令合并所有这些part-*文件。 这只有在从Pig shell(而不是Java)运行Pig脚本时才可能实现

与建议的解决方案相比,这是一个优势:因为您仍然可以使用多个减缩器来处理数据,所以您的作业可能会运行得更快,尤其是当每个减缩器输出的数据很少时

grunt> fs -getmerge  <Pig output file> <local file>
grunt>fs-getmerge

我认为这并不理想,因为在大输出数据上使用太少的缩减器可能会导致内存不足错误。